力扣394.字符串解析 | 栈 | 字符串字符整数类型转换 | StringBuilder
题解
点击查看代码
class Solution {
public String decodeString(String s) {
Stack<String> stack = new Stack<>();
for(char c : s.toCharArray()){
String str = String.valueOf(c);//错误写法String(c);
if(!str.equals("]")){//如果不是右括号就入栈
stack.push(str);
}
else{//如果是右括号的话就出栈:需要判断是[ a 3三者其一
StringBuilder temp = new StringBuilder();//用temp保存暂时的字符串。错误写法String temp = '';
while(!stack.isEmpty() && !stack.peek().equals("[")){
temp.insert(0,stack.pop());
}
stack.pop();//移除栈顶的这个 [
StringBuilder num = new StringBuilder();
while(!stack.isEmpty() && Character.isDigit(stack.peek().charAt(0))){
num.insert(0,stack.pop());
}
//根据重复次数和重复字符串拼接此层字符串
StringBuilder res = new StringBuilder();
int cnt = num.length()>0 ? Integer.parseInt(num.toString()):1;
while(cnt > 0){
res.append(temp);
cnt--;
}
//把这个res字符串压入栈,继续下次循环
stack.push(res.toString());
}
}
StringBuilder res =new StringBuilder();
while(!stack.isEmpty()){
res.insert(0,stack.pop());
}
return res.toString();
}
}
Integer.toString(int i)
Character.toString(char c)调用String.valueOf(char c)实现
Integer.valueOf(String s)调用Integer.parseInt(String s)实现,需要计算的话使用parseInt,需要对象的话使用valueOf。
StringBuilder拼接字符串
StringBuilder res =new StringBuilder();
常用于对于字符串的拼接而非直接加减字符串
浙公网安备 33010602011771号