

// class Solution {
// public:
// string reverseParentheses(string s) {
// int j = 0,i = 0;
// int len = s.size();
// vector<string> mysk;
// string str;
// string ret;
// //对于开头的处理
// while(i < len && isalpha(s[i])){
// i++;
// }
// str = s.substr(0,i);
// if(!str.empty())
// ret += str;
// //开始正文
// while(i < len){
// j = i;
// str = s.substr(j,i-j);
// if(i < len && s[i] == '(' && !str.empty()){
// mysk.push_back(str);
// }else if(i < len && s[i] == ')'){
// reverse(str.begin(),str.end());
// if(!mysk.empty())
// mysk.back() = mysk.back()+str;
// else mysk.push_back(str);
// }
// i++;
// }
// if(!str.empty())
// }
// };
class Solution {
public:
string reverseParentheses(string s) {
vector<char> mysk;
string str;
for(auto & ch:s){
if(ch == ')'){
//其实这样就完成了一次反转
while(mysk.back() != '('){
str += mysk.back();
mysk.pop_back();
}
mysk.pop_back();
for(auto & c:str){
mysk.push_back(c);
}
str = "";
}else {
mysk.push_back(ch);
}
}
for(auto & ch:mysk){
str += ch;
}
return str;
}
};
本文介绍了一种实现括号内字符串翻转的算法,通过使用栈来记录字符,并在遇到右括号时进行翻转操作。此方法能够有效地处理嵌套括号的情况。
846

被折叠的 条评论
为什么被折叠?



