mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-06 17:50:39 +08:00
Adding to backtracking (#1289)
* adding generate-parenthses algorithm * adding generateParenthses algorithm * adding generate parentheses algorithm * fixing comments according to the JDoc comments, cleaning code * fixing comments
This commit is contained in:
31
Backtracking/generateParentheses.js
Normal file
31
Backtracking/generateParentheses.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
* Problem Statement: Given a number n pairs of parentheses, try to Generate all combinations of valid parentheses;
|
||||||
|
* @param {number} n - number of given parentheses
|
||||||
|
* @return {string[]} res - array that contains all valid parentheses
|
||||||
|
* @see https://leetcode.com/problems/generate-parentheses/
|
||||||
|
*/
|
||||||
|
|
||||||
|
const generateParentheses = (n) => {
|
||||||
|
const res = []
|
||||||
|
|
||||||
|
const solve = (chres, openParenthese, closedParenthese) => {
|
||||||
|
if (openParenthese === n && closedParenthese === n) {
|
||||||
|
res.push(chres)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (openParenthese <= n) {
|
||||||
|
solve(chres + '(', openParenthese + 1, closedParenthese)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (closedParenthese < openParenthese) {
|
||||||
|
solve(chres + ')', openParenthese, closedParenthese + 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
solve('', 0, 0)
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
export { generateParentheses }
|
5
Backtracking/tests/GenerateParentheses.test.js
Normal file
5
Backtracking/tests/GenerateParentheses.test.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { generateParentheses } from '../generateParentheses'
|
||||||
|
|
||||||
|
test('generate all valid parentheses of input 3', () => {
|
||||||
|
expect(generateParentheses(3)).toStrictEqual(['((()))', '(()())', '(())()', '()(())', '()()()'])
|
||||||
|
})
|
Reference in New Issue
Block a user