大家好,我正在尝试使用JavaScript解决编码问题,但是我遇到了分配大小溢出的问题。
问题是您有一个包含英文字母,标点符号,空格字符和方括号的字符串s。确保s中的括号形成规则的括号序列。
您的任务是从最里面的一对开始反转包含在每对匹配括号中的字符串。结果字符串不应包含任何括号。
示例
对于字符串s =“ a(bc)de”,输出应为 reverseParentheses(s)=“ acbde”。
输入/输出
[执行时限] 4秒(js)
[输入]字符串s
由英文字母,标点符号,空格字符和方括号组成的字符串。保证括号形成规则的括号序列。
约束: 5≤s。长度≤55。
[输出]字符串
function reverseParentheses(s) {
if(!s.includes('(')) {
console.log(s)
return s;
}
//Find last index of opening parentheses instance
let lastOpenIndex = s.lastIndexOf('(');
//Find the first index of closing parentheses instance
let firstCloseIndex = s.indexOf(')');
//Find the number of characters between last open parentheses and first closing parentheses
let space = firstCloseIndex - lastOpenIndex - 1;
//Reverse items in parentheses
let reversedString = s.slice(lastOpenIndex + 1,firstCloseIndex).split('').reverse().join('')
//Create new string with reversed word and dropped parantheses
const newString = s.substring(0,lastOpenIndex) + reversedString + s.substring(firstCloseIndex + 1,s.length)
return reverseParentheses(newString)
}
reverseParentheses("abc(cba)ab(bac)c")
在函数调用中给定字符串的预期结果应该是“ abcabcabcabc”,但是却给出了内存大小分配错误。一方面,代码无法在较小的输入中使用。
答案 0 :(得分:0)
这是一个简单而最少的实现,一个函数负责获取子字符串,另一个函数负责一次替换一个括号,然后当然是我刚刚称为date
的递归函数。 / p>
Date