编写智能重复 函数实现:
- 将3[abc]变为abcabcabc
- 将3[2[a]2[b]]变为aabbaabbaabb
不用考虑输入的字符串非法的情况
- 遍历每一个字符 如果是数字 压入stack1
- 如果是 [ 给stack2压入一个空字符
- 如果是 字符串 更新到 stack2 末尾的字符中
- 如果是 ] 将stack1 弹栈 将stack2 弹栈 并处理两个值得到值 更新到最新的stack2 栈顶字符串中
let str = '2[3[a]4[b]]'
function smartRepeat (str){
let stack1 = [];
let stack2 = [''];
let index = 0;
let reg1 = /\[/
let reg2 = /\]/
let reg3 = /\d/
let reg4 = /[a-zA-Z]/
while (index < str.length) {
let char = str[index]
if (reg3.test(char)) {
stack1.push(char)
} else if (reg1.test(char)) {
stack2.push('')
}else if (reg4.test(char)) {
stack2[stack2.length-1] += char
}else if (reg2.test(char)) {
let stack1pop = stack1.pop()
let stack2pop = stack2.pop()
let newStr = ''
for (let i=0;i<stack1pop;i++) {
newStr+=stack2pop
}
stack2[stack2.length-1] += newStr
}
index++
}
return stack2[0]
}