DEV Community

Discussion on: Daily Challenge #151 - Reverse Parentheses

Collapse
 
vitornogueira profile image
Vitor Nogueira

Javascript

const regex = /\((.*)\)/;
const beforeReverse = string => string.replace(/\(/g, '[').replace(/\)/g, ']');
const afterReverse = string => string.replace(/\]/g, '(').replace(/\[/g, ')');
const reverse = (string, replacedString = '') => {
  const [_, nextStringToReverse] = string.match(regex) || [];
  const stringToReplace = replacedString || string;

  if (!nextStringToReverse) {
    return stringToReplace;
  }

  const newString = afterReverse(beforeReverse(nextStringToReverse).split('').reverse().join(''));

  return reverse(newString, stringToReplace.replace(nextStringToReverse, newString));
};

const stringToReverse = 'a ((d e) c b)';
reverse(stringToReverse);