Decode
unknown
java
a year ago
1.7 kB
7
Indexable
class Solution { public String decodeString(String s) { Stack<String> st = new Stack<String>(); int idx = s.length() - 1; while (idx >= 0) { String temp = ""; if (Character.isLetter(s.charAt(idx))) { st.push(String.valueOf(s.charAt(idx))); } else if (s.charAt(idx) == ']') { while(!st.isEmpty() && !st.peek().equals("]")) { temp += st.pop(); } if (!temp.isEmpty()) { st.push(temp); } st.push("]"); } else if (s.charAt(idx) == '[') { int multiple = 1; String res = ""; while(!st.isEmpty() && !st.peek().equals("]")) { temp += st.pop(); } String number = ""; while (idx - 1 >= 0 && Character.isDigit(s.charAt(idx - 1))) { number = String.valueOf(s.charAt(idx - 1)) + number; idx--; } if (!number.isEmpty()) { multiple = Integer.parseInt(number); } for (int i = 0; i < multiple; i++) { res += temp; } if(!st.isEmpty() && st.peek().equals("]")) { st.pop(); } if (!res.isEmpty()) { st.push(res); } } idx--; } String res = ""; while (!st.isEmpty()) { res += st.pop(); } return res; } }
Editor is loading...
Leave a Comment