Advertisement
thewitchking

Untitled

Dec 14th, 2023
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.76 KB | None | 0 0
  1. class Solution {
  2.     int ptr = 0;
  3.    
  4.     public String decodeString(String s) {
  5.         return helper(s.toCharArray());
  6.     }
  7.    
  8.     public String helper(char[] sArr) {
  9.         int multiplier = 1;
  10.         String substring = "";
  11.         StringBuilder sb = new StringBuilder();
  12.         while(ptr < sArr.length) {
  13.             char c = sArr[ptr];
  14.             if(Character.isDigit(c)) {
  15.                 multiplier = parseInt(sArr);
  16.             } else if(c == '[') {
  17.                 ptr++;
  18.                 substring = helper(sArr);
  19.                 while(multiplier > 0) {
  20.                     sb.append(substring);
  21.                     multiplier--;
  22.                 }
  23.             } else if(Character.isLetter(c)) {
  24.                 substring = parseString(sArr);
  25.                 sb.append(substring);
  26.             } else if(c == ']') {
  27.                 String finalString = sb.toString();
  28.                 multiplier--;
  29.                 while(multiplier > 0) {
  30.                     multiplier --;
  31.                     sb.append(finalString);
  32.                 }
  33.                 multiplier = 1;
  34.                 ptr++;
  35.                 break;
  36.             }
  37.         }
  38.         return sb.toString();
  39.     }
  40.    
  41.     public String parseString(char[] sArr) {
  42.         StringBuilder sb = new StringBuilder();
  43.         while(ptr < sArr.length && Character.isLetter(sArr[ptr])) {
  44.             sb.append(sArr[ptr]);
  45.             ptr++;
  46.         }
  47.         return sb.toString();
  48.     }
  49.    
  50.     public int parseInt(char[] sArr) {
  51.         StringBuilder sb = new StringBuilder();
  52.         while(ptr < sArr.length && Character.isDigit(sArr[ptr])) {
  53.             sb.append(sArr[ptr]);
  54.             ptr++;
  55.         }
  56.         return Integer.parseInt(sb.toString());
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement