function solution(s) {
let balance = 0
for (let char of s) {
if (char === '(') {
balance += 1
} else {
balance -= 1
}
if (balance < 0) {
return false
}
}
return balance === 0
}
function solution(s) {
const isValid = (str) => {
const stack = []
const pairs = { ')': '(', ']': '[', '}': '{' }
for (let char of str) {
if (['(', '[', '{'].includes(char)) {
stack.push(char)
} else if ([')', ']', '}'].includes(char)) {
if (stack.pop() !== pairs[char]) {
return false
}
}
}
return stack.length === 0
}
let count = 0
for (let i = 0; i < s.length; i++) {
const rotated = s.slice(i) + s.slice(0, i)
if (isValid(rotated)) {
count++
}
}
return count
}
function solution(p) {
if (p === '') return ''
const isBalanced = (str) => {
let balance = 0
for (let char of str) {
balance += char === '(' ? 1 : -1
if (balance < 0) return false
}
return balance === 0
}
const splitBalanced = (str) => {
let balance = 0
for (let i = 0; i < str.length; i++) {
balance += str[i] === '(' ? 1 : -1
if (balance === 0) return [str.slice(0, i + 1), str.slice(i + 1)]
}
}
const reverseParentheses = (str) => {
return str
.split('')
.map((char) => (char === '(' ? ')' : '('))
.join('')
}
const [u, v] = splitBalanced(p)
if (isBalanced(u)) {
return u + solution(v)
} else {
return '(' + solution(v) + ')' + reverseParentheses(u.slice(1, u.length - 1))
}
}