用栈解决字符串解码

在这里插入图片描述

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