Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package javap;
- import java.util.Scanner;
- public class uppg6 {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- String text = scan.nextLine();
- String output = decompress(text);
- System.out.println(output);
- scan.close();
- }
- private static String decompress(String text) {
- int i = 0;
- if(text.equals("") || text.length() == 1) return text;
- //LETTER
- if(Character.isLetter(text.charAt(i))){
- return text.substring(0,1) + decompress(text.substring(1)); //ret letter and decompress rest
- }
- //DIGIT
- else if(Character.isDigit(text.charAt(i))){
- int number = Integer.parseInt(text.substring(0,1));
- if(Character.isDigit(text.charAt(i+1))){ //covers 1-99
- number = Integer.parseInt(text.substring(0,2));
- }
- int len = Integer.toString(number).length();
- if(text.charAt(i+len) == '('){ //new substring
- int left = 1;
- int right = 0;
- int endPos = 0;
- while(right != left){
- for(endPos = text.indexOf(text.charAt(i+len+1)); endPos < text.length(); endPos++){
- if(text.charAt(i+len+endPos) == ')'){
- right++;
- }
- else if(text.charAt(i+len+endPos) == '('){
- left++;
- }
- endPos++;
- }
- }
- return multiple(text.substring(len+1, endPos), number) + decompress(text.substring(endPos+1));
- }
- else{ //if letter after digit
- return multiple(text.substring(len, len+1), number) + decompress(text.substring(len+1));
- }
- }
- return text;
- }
- private static StringBuilder multiple(String substring, int number) {
- StringBuilder sb = new StringBuilder();
- int i = 0;
- while (i<number){
- sb.append(decompress(substring));
- i++;
- }
- return sb;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement