Reverse In Parentheses
Write a function that reverses characters in (possibly nested) parentheses in the input string.
Input strings will always be well-formed with matching ()
s.
Example
For
inputString = "(bar)"
, the output should bereverse_in_parentheses(inputString) = "rab"
For
inputString = "foo(bar)baz"
, the output should bereverse_in_parentheses(inputString) = "foorabbaz"
For
inputString = "foo(bar)baz(blim)"
, the output should bereverse_in_parentheses(inputString) = "foorabbazmilb"
For
inputString = "foo(bar(baz))blim"
, the output should bereverse_in_parentheses(inputString) = "foobazrabblim"
Because
"foo(bar(baz))blim"
becomes"foo(barzab)blim"
and then"foobazrabblim"
.
Solution
py
import re
def reverse_in_parentheses(inputString):
m = re.search(r"\(([^()]*)\)", inputString)
if m is None:
return inputString
return reverse_in_parentheses(inputString[: m.start()] + m.group(1)[::-1] + inputString[m.end():])
print(reverse_in_parentheses("(bar)"))
js
function reverseInParentheses(inputString) {
const regex = /\(([^()]*)\)/;
let result = inputString;
let match = result.match(regex);
while (match) {
const reversed = match[1].split('').reverse().join('');
result = result.replace(regex, reversed);
match = result.match(regex);
}
return result;
}
console.log(reverseInParentheses('foo(bar(baz))blim'));