1190.反转每对括号间的字符串

1190反转每对括号间的字符串

下面是题目

下面是题目给出的代码

1
2
3
4
5
6
class Solution {
public:
string reverseParentheses(string s) {

}
};

解题思路和394字符串解码一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public:
string reverseParentheses(string s) {
stack<string> stk;
string res;
for (int i = 0; i < s.size(); i++)
{
//如果是字母,就加到res字符串里去
if(isalpha(s[i])){
res.push_back(s[i]);
} else if (s[i]=='(')
//如果是出现左括号,那么入栈+更新res
{
stk.push(res);
res = "";
} else{
//如果是右括号,把现有的res反转,然后加给栈头
//出栈,更新res = 栈头
reverse(res.begin(),res.end());
stk.top()+=res;
res=stk.top();
stk.pop();
}
}
return res;
}
};

reverse()函数的用法

反转string
1
2
3
4
5
6
int main() {
string N;
cin>>N;
reverse(N.begin(), N.end());
cout<<N<<endl;
}
反转字符数组
1
2
3
4
5
6
7
int main() {
char a[101];
cin.getline(a,sizeof(a));
int m=strlen(a);
reverse(a,a+m);
puts(a);
}
-------------本文结束,感谢您的阅读-------------