1 笔试题目
1.1 题目描述
给出一个字符串 s(仅含有小写英文字母和括号)。
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
注意,您的结果中 不应包含任何括号。
1.2示例
示例 1:输入:s = "(abcd)"输出:"dcba"示例 2:输入:s = "(u(love)i)"输出:"iloveu"示例 3:输入:s = "(ed(et(oc))el)"输出:"leetcode"示例 4:输入:s = "a(bcdefghijkl(mno)p)q"输出:"apmnolkjihgfedcbq"
1.3 提示:
0 <= s.length <= 2000
s 中只有小写英文字母和括号
我们确保所有括号都是成对出现的
2 问题解决
2.1 题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses
2.2 思路分析
2.3 代码示例
import java.util.*;public class Main {public static void main(String[] args){Scanner sc =new Scanner(System.in);String s = sc.next();Solution solution = new Solution();String answer =solution.reverseParenthese(s);System.out.println(answer);}}class Solution{public void reverse(char[]a,int l,int r){while(r>l){char temp=a[l];a[l]=a[r];a[r]=temp;r--;l++;}}public String reverseParenthese(String s){Stack<Integer> stack =new Stack<>();StringBuilder sb =new StringBuilder();char[] arr= s.toCharArray();for(int i= 0; i<arr.length;i++){if(arr[i]=='('){stack.push(i);}else if(arr[i]==')'){reverse(arr,stack.pop()+1,i-1);}}for(int i=0;i<arr.length;i++){if(arr[i]!='(' && arr[i]!=')' ){sb.append(arr[i]);}}return sb.toString();}}
2.4 小结反思
看某个面经描述,还有一面手撕代码就是要求写这个
