Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.37 KB | None | 0 0
  1. package javap;
  2. import java.util.Scanner;
  3.  
  4. public class uppg6 {
  5.     public static void main(String[] args) {
  6.         Scanner scan = new Scanner(System.in);
  7.         String text = scan.nextLine();
  8.  
  9.         String output = decompress(text);
  10.         System.out.println(output);
  11.        
  12.         scan.close();
  13.     }
  14.  
  15.     private static String decompress(String text) {
  16.         int i = 0;
  17.         if(text.equals("") || text.length() == 1) return text;
  18.  
  19.         //LETTER
  20.         if(Character.isLetter(text.charAt(i))){
  21.             return text.substring(0,1) + decompress(text.substring(1)); //ret letter and decompress rest
  22.         }
  23.  
  24.         //DIGIT
  25.         else if(Character.isDigit(text.charAt(i))){
  26.             int number = Integer.parseInt(text.substring(0,1));
  27.             if(Character.isDigit(text.charAt(i+1))){ //covers 1-99
  28.                 number = Integer.parseInt(text.substring(0,2));
  29.             }
  30.  
  31.             int len = Integer.toString(number).length();
  32.  
  33.             if(text.charAt(i+len) == '('){
  34.                 int last = text.lastIndexOf(')');
  35.                
  36.                 return multiple(text.substring(len+1, last), number) + decompress(text.substring(last+1));
  37.             }
  38.             else{
  39.                 return multiple(text.substring(len, len+1), number) + decompress(text.substring(len+1));
  40.             }          
  41.  
  42.         }
  43.         return text;
  44.  
  45.     }
  46.  
  47.     private static StringBuilder multiple(String substring, int number) {
  48.         StringBuilder sb = new StringBuilder();
  49.         int i = 0;
  50.         while (i<number){
  51.             sb.append(decompress(substring));
  52.             i++;
  53.         }
  54.         return sb;
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement