LeetCode Entry
1190. Reverse Substrings Between Each Pair of Parentheses
Reverse the substrings in braces
1190. Reverse Substrings Between Each Pair of Parentheses medium substack youtube
https://dmitrysamoylenko.com/leetcode/

Join me on Telegram
https://t.me/leetcode_daily_unstoppable/1495
Problem TLDR
Reverse the substrings in braces
Intuition
Brute-force: a) innermost by regex b) innermost by finding first closing brace c) recursive dfs subproblem
Optimal:
build the teleportation table and iterate in a separate step

Approach
- regex is group starting with ( brace, ending with ) brace and not having [^]* any () inside it
Complexity
-
Time complexity: \(O(n^2)\)
-
Space complexity: \(O(n)\)
Code
fun reverseParentheses(s: String): String = if ('(' !in s) s else
reverseParentheses(s.replace(Regex("""\(([^()]*)\)""")) { it.groupValues[1].reversed() })
pub fn reverse_parentheses(mut s: String) -> String {
while let Some(r) = s.find(')') {
let l = s[..r].rfind('(').unwrap();
s.replace_range(l..=r, &s[l + 1..r].chars().rev().join(""))
} s
}
Comments