codesignal) reverse in parentheses

Sujin·2022년 12월 26일
0

LeetCode

목록 보기
12/24
post-thumbnail

괄호 안의 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;
}
profile
멋찐 나 ,,(가 되고픈)

0개의 댓글