DDSA
Advertisement

1190. Reverse Substrings Between Each Pair of Parentheses

Time: O(n²)
Space: O(n)

Approach

Stack-based; push the current StringBuilder position on '('; on ')' reverse the substring since that open paren.

1190.cs
C#
// Approach: Stack-based; push the current StringBuilder position on '('; on ')' reverse the substring since that open paren.
// Time: O(n²) Space: O(n)

public class Solution
{
    public string ReverseParentheses(string s)
    {
        var st = new Stack<int>();
        var sb = new StringBuilder();

        foreach (char ch in s)
        {
            if (ch == '(')
                st.Push(sb.Length);
            else if (ch == ')')
            {
                var reversed = new StringBuilder();
                for (int sz = sb.Length - st.Pop(); sz > 0; sz--)
                {
                    reversed.Append(sb[sb.Length - 1]);
                    sb.Remove(sb.Length - 1, 1);
                }
                sb.Append(reversed);
            }
            else
                sb.Append(ch);
        }

        return sb.ToString();
    }
}
Advertisement
Was this solution helpful?