class Solution {
public String decodeString(String s) {
Stack<Integer> repeatStack = new Stack<>();
Stack<String> stack = new Stack<>();
StringBuffer result = new StringBuffer();
int i = 0;
int repeat = 0;
while(i < s.length()){
char c = s.charAt(i);
if(c >= '0' && c <= '9')
repeat = repeat * 10 + (c - '0');
else if(c == '['){
//将数字以及左括号入栈
repeatStack.push(repeat);
repeat = 0;
stack.push(result.toString());
result.delete(0,result.length());
}else if(c == ']'){
int repeatNum = repeatStack.pop();
String temp = result.toString();
for(int j = 0;j < repeatNum-1;j++) result.append(temp);
result.insert(0,stack.pop());
}else
result.append(c);
i++;
}
return result.toString();
}
}
leetcode394. 字符串解码
最新推荐文章于 2024-09-27 00:45:01 发布