题目链接:LeeCode394字符串解码
题目描述:
年前开的这个题,然后写了两发,没过,就去奶奶家过年了,吃年夜饭都在想,回家迫不及待就给写了,简单递归,想好入口出口,各种情况考虑清楚就ok了,唯一注意的地方就是用string拼接会比stringbuilder慢很多
class Solution {
public static String decodeString(String s) {
return dfs(s, 0)[0];
}
public static String[] dfs(String s,int start){
StringBuilder ss=new StringBuilder();
int sum=0;
for (int i = start; i < s.length(); i++) {
//如果是数字就将这个次数用变量存起来
if(s.charAt(i)>='0'&&s.charAt(i)<='9'){
//System.out.println(s.charAt(i));
sum=sum*10+s.charAt(i)-'0';
}else if(s.charAt(i)=='['){
//入口,每次碰见[进入递归将递归结果字符串拼接上
String temp[]=dfs(s,i+1);
for (int j = 0; j < sum; j++) {
ss.append(temp[0]);
}
sum=0;
i=Integer.parseInt(temp[1]);
}else if(s.charAt(i)==']'){
//出口,将本次递归结果返回
return new String[]{
ss.toString(),Integer.toString(i)};
}else{
//碰见字母正常拼
ss.append(s.charAt(i));
}
}
return new String[]{
ss.toString(),"0"};
}
}