用 curString 去记录前面的 String 的结果
- class Solution {
- public String decodeString(String s) {
- if(s.length() == 0) return "";
- char[] arr = s.toCharArray();
- Stack<String> stack = new Stack<>();
- int i = 0;
- String curString = "";
- while(i < s.length()){
- if(Character.isDigit(arr[i])){
- String num = "";
- while(Character.isDigit(arr[i])){
- num += arr[i];
- i++;
- }
- stack.push(num);
- }
- if(arr[i] == '['){
- stack.push(curString);
- curString = "";
- i++;
- continue;
- }
- if(arr[i] == ']'){
- String prev = stack.pop();
- String num = stack.pop();
- int j = Integer.parseInt(num);
- String temp = curString;
- for(int k = 0; k < j-1; k++){
- curString += temp;
- }
- curString = prev + curString;
- i++;
- }else{
- curString += arr[i];
- i++;
- }
- }
- return curString;
- }
- }
来源: http://www.bubuko.com/infodetail-2877797.html