Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- int ptr = 0;
- public String decodeString(String s) {
- return helper(s.toCharArray());
- }
- public String helper(char[] sArr) {
- int multiplier = 1;
- String substring = "";
- StringBuilder sb = new StringBuilder();
- while(ptr < sArr.length) {
- char c = sArr[ptr];
- if(Character.isDigit(c)) {
- multiplier = parseInt(sArr);
- } else if(c == '[') {
- ptr++;
- substring = helper(sArr);
- while(multiplier > 0) {
- sb.append(substring);
- multiplier--;
- }
- } else if(Character.isLetter(c)) {
- substring = parseString(sArr);
- sb.append(substring);
- } else if(c == ']') {
- String finalString = sb.toString();
- multiplier--;
- while(multiplier > 0) {
- multiplier --;
- sb.append(finalString);
- }
- multiplier = 1;
- ptr++;
- break;
- }
- }
- return sb.toString();
- }
- public String parseString(char[] sArr) {
- StringBuilder sb = new StringBuilder();
- while(ptr < sArr.length && Character.isLetter(sArr[ptr])) {
- sb.append(sArr[ptr]);
- ptr++;
- }
- return sb.toString();
- }
- public int parseInt(char[] sArr) {
- StringBuilder sb = new StringBuilder();
- while(ptr < sArr.length && Character.isDigit(sArr[ptr])) {
- sb.append(sArr[ptr]);
- ptr++;
- }
- return Integer.parseInt(sb.toString());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement