解题思路
利用栈的方式,遇到(及字母就进行入栈操作,遇到)就进行出栈操作,并将每次的串入栈
例如 s = “(u(love)i)”
栈中元素:
(u(love 遇到’)’
(u love i 遇到’)’
uevoli
代码
class Solution {
public String reverseParentheses(String s) {
char[] chars = s.toCharArray();
StringBuilder sb = new StringBuilder();
LinkedList<String> stack = new LinkedList<>();
int n = chars.length;
for (int i=0;i<n;i++){
if (chars[i]=='(' || Character.isAlphabetic(chars[i])){
stack.add(chars[i]+"");
}
else if (chars[i]==')'){
StringBuilder tem = new StringBuilder();
while (!stack.getLast().equals("(")){
tem.append(stack.getLast());
stack.removeLast();
}
stack.removeLast();
tem.reverse();
stack.add(tem.toString());//将目前的串入栈
}
}
while (!stack.isEmpty()){
sb.append(stack.getLast());
stack.removeLast();
}
sb.reverse();
return sb.toString();
}
}