괄호 안의 string을 reverse하여 리턴해주는 문제
For inputString = "foo(bar(baz))blim"
, the output should be
solution(inputString) = "foobazrabblim"
.
Because "foo(bar(baz))blim"
becomes "foo(barzab)blim"
and then "foobazrabblim"
.
아이디어는 스택을 사용하는건데,, 괄호 시작
index
를 스택에 보관하는게 핵심!
string solution(string inputString) {
stack<int> s;
for (int i = 0; i < inputString.length(); i++) {
if (inputString[i] == '(') {
s.push(i);
} else if (inputString[i] == ')') {
int start = s.top();
reverse(inputString.begin() + start + 1, inputString.begin() + i);
s.pop();
}
}
string result = "";
for (int i = 0; i < inputString.length(); i++) {
if (inputString[i] != '(' && inputString[i] != ')')
result += inputString[i];
}
return result;
}