class Solution {
int i;
public String decodeString(String s) {
LinkedList<String> list=new LinkedList<>();
i=0;
char c;
while(i<s.length()){
c=s.charAt(i);
if(Character.isDigit(c)){
list.add(getDigit(s));
}else if(c==']'){
i++;
LinkedList<String> li=new LinkedList<>();
while(!"[".equals(list.peekLast())){
li.add(list.removeLast());
}
list.removeLast();
Collections.reverse(li);
String t=getString(li);
int repeat=Integer.parseInt(list.removeLast());
while(repeat-->0){
list.add(t);
}
}else {
list.add(String.valueOf(c));
i++;
}
}
return getString(list);
}
public String getDigit(String s){
StringBuilder sb=new StringBuilder();
while(Character.isDigit(s.charAt(i))){
sb.append(s.charAt(i++));
}
return sb.toString();
}
public String getString(LinkedList<String> list){
StringBuilder sb=new StringBuilder();
for(String s:list){
sb.append(s);
}
return sb.toString();
}
}
用栈解决字符串解码
猜你喜欢
转载自blog.csdn.net/changbaishannefu/article/details/115189063
今日推荐
周排行