題目:
給你字串
裡面有()跟其他字母
每次遇到()都要翻轉中間所有的東西
然後()就消失
回傳他給的字串翻轉後的結果
思路:
stack
在遇到)之後
就一直把東西拿出來放到另一個rev陣列裡
直到遇到(再把rev的翻轉放回去
思路2:
stack
不過是紀錄index
直接用紀錄的(的位子跟新來的)的位子
用reverse 翻轉那兩個位子
然後pop掉上個位子的(就可以了
兩種都100%
我永遠愛stack姐姐
https://youtu.be/RtTYQuO1j6w?si=WiqCioxWNUvpKNAA
```cpp
class Solution {
public:
string reverseParentheses(string s)
{
vector<char> paper;
vector<char> rev;
int len = s.size();
for(int i = 0 ; i < len ; i ++)
{
paper.push_back(s[i]);
if(paper.back() == ')')
{
paper.pop_back();
while(paper.back()!='(')
{
rev.push_back(paper.back());
paper.pop_back();
}
paper.pop_back();
for(auto k : rev)
{
paper.push_back(k);
}
rev.clear();
}
}
string res ;
for(auto k : paper)res.push_back(k);
return res;
}
};
```
```cpp
class Solution {
public:
string reverseParentheses(string s)
{
vector<int> paper;
string res ;
int len = s.size();
for(int i = 0 ; i < len ; i ++)
{
if(s[i] == '(')
{
paper.push_back(res.size());
continue;
}
if(s[i] == ')')
{
reverse(res.begin()+paper.back() , res.end());
paper.pop_back();
continue;
}
res.push_back(s[i]);
}
return res;
}
};
```