diff --git a/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README.md b/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README.md index 4b0f430d25036..21ca1beeb7696 100644 --- a/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README.md +++ b/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README.md @@ -108,6 +108,44 @@ class Solution { } ``` +### **JavaScript** + +```js +/** + * @param {string} s + * @return {string} + */ +var reverseParentheses = function(s) { + let stack = []; + let hashMap = {}; + const n = s.length; + for (let i = 0; i < n; i++) { + let cur = s.charAt(i); + if (cur == '(') { + stack.push(i); + } else if (cur == ')') { + let left = stack.pop(); + hashMap[left] = i; + hashMap[i] = left; + } + } + let res = []; + let i = 0; + let step = 1; // 1向右,-1向左 + while (i > -1 && i < n) { + let cur = s.charAt(i); + if (cur == '(' || cur == ')') { + step = -step; + i = hashMap[i]; + } else { + res.push(cur); + } + i += step; + } + return res.join(''); +}; +``` + ### **...** ``` diff --git a/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README_EN.md b/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README_EN.md index aa150bb6fa213..b30adf4f76720 100644 --- a/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README_EN.md +++ b/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/README_EN.md @@ -104,6 +104,44 @@ class Solution { } ``` +### **JavaScript** + +```js +/** + * @param {string} s + * @return {string} + */ +var reverseParentheses = function(s) { + let stack = []; + let hashMap = {}; + const n = s.length; + for (let i = 0; i < n; i++) { + let cur = s.charAt(i); + if (cur == '(') { + stack.push(i); + } else if (cur == ')') { + let left = stack.pop(); + hashMap[left] = i; + hashMap[i] = left; + } + } + let res = []; + let i = 0; + let step = 1; // 1向右,-1向左 + while (i > -1 && i < n) { + let cur = s.charAt(i); + if (cur == '(' || cur == ')') { + step = -step; + i = hashMap[i]; + } else { + res.push(cur); + } + i += step; + } + return res.join(''); +}; +``` + ### **...** ``` diff --git a/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/Solution.js b/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/Solution.js new file mode 100644 index 0000000000000..0ae410cb68c16 --- /dev/null +++ b/solution/1100-1199/1190.Reverse Substrings Between Each Pair of Parentheses/Solution.js @@ -0,0 +1,33 @@ +/** + * @param {string} s + * @return {string} + */ + var reverseParentheses = function(s) { + let stack = []; + let hashMap = {}; + const n = s.length; + for (let i = 0; i < n; i++) { + let cur = s.charAt(i); + if (cur == '(') { + stack.push(i); + } else if (cur == ')') { + let left = stack.pop(); + hashMap[left] = i; + hashMap[i] = left; + } + } + let res = []; + let i = 0; + let step = 1; // 1向右,-1向左 + while (i > -1 && i < n) { + let cur = s.charAt(i); + if (cur == '(' || cur == ')') { + step = -step; + i = hashMap[i]; + } else { + res.push(cur); + } + i += step; + } + return res.join(''); +}; \ No newline at end of file