首页 > 编程知识 正文

华为手机怎么搜题,华为机考题库2021

时间:2023-05-04 02:19:04 阅读:120163 作者:4443

第一题:反转各括号之间的子串(1190 .反转各括号之间的子串) ) ) ) ) ) ) ) ) )。

参考博客: Leetcode 1190 :反转括号对之间的子字符串(超详细解法! )

JAVA编程:反转各括号之间的子字符串(LeetCode:1190 ) ) ) ) ) ) ) ) )。

可以使用dfs,也可以使用存储字符串的堆栈来完成。

import java.util.*; public class main { publicstaticvoidmain (字符串[ ] args ) scannersc=newscanner ) system.in ); String str=sc.nextLine (; 系统. out.println (reverse parentheses (str ) ); (//思路:遇到左括号时递归进行字符串反转即可,不仅代码简洁,而且能完美解决括号嵌套问题的publicstaticstringreverseparentheses (strings ) if ) s. stringbuilder str=new stringbuilder (; for(intI=0; is.length (; I ) if(s.Charat(I )==' ) ) { int j=i,bal=0; for (; js.length (; j () if ) s.Charat(j )==' ) bal; if(s.Charat(j )==' ) ) ) ) bal--; if(bal==0) break; } stringbuilder tmp=new stringbuilder (reverse parentheses ) s.substring (i1,j ) ); for(intk=tmp.length ) )-1; k=0; k--; str.append(tmp.Charat(k ) ); i=j; }elsestr.append(s.Charat(I ); } return str.toString (; }在堆栈上做的话,非常容易理解,所以建议掌握。

publicstringreverseparentheses (strings ) stringbuilder sb=new stringbuilder ); char[] arr=s.toCharArray (; 堆叠integer堆叠=new堆叠(; for(intI=0; i arr.length; I ) if(ARR[I]==' () stack.push(I ); if(arr(I )==' ) ) (reverse ) arr,stack.pop ) ) 1,i - 1 ); }for(intI=0; i arr.length; I ) if(arr[I]!=' ) ' arr[i]!=' ' ) sb.append(arr[I]; return sb.toString (; }publicvoidreverse(char[]arr,int left,int right ) while (right left ) ) { char tmp=arr[left]; arr[left]=arr[right]; arr[right]=tmp; 光- -; 左足; }作者: uncleGem链接: https://leet code-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/Sood 非商业转载请注明出处。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。