Распаковка строки

Задача: Написать на Java программу распаковывания строки. На вход поступает строка вида число[строка], на выход - строка, содержащая повторяющиеся подстроки. Я написал примитивный вариант : на вход подать 3[xyz]4[xy]z то ответ будет xyzxyzxyzxyxyxyxyz,но вся эта логика становится не актуальна если входные данные будут скажем 2[3[x]y](ответ должен быть xxxyxxxy).Подскажите в каком направлении думать, пытался реализовать с помощью hashMap, чтобы число было ключом, а то что в скобках значением - не получилось. Несколько дней уже пытаюсь реализовать грамотно эту задачу, но пока получился только такой неграмотный вариант. Буду признателен и рад любой помощи!

public class UnpackingString {

    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String[] str = a.split("\\[+|\\]");
        UnpackingString unp = new UnpackingString();
        
        int i = 1;
        
        
        for (String string : str) {
                    
            if (unp.checkString(string)) {
                i = Integer.parseInt(string);
            }else {
                for (int j = 0; j < i; j++) {
                    System.out.print(string);               
                }
                i = 1;
            }
                            
        }       
    }
    public boolean checkString(String string) {
        try {
            Integer.parseInt(string);
        } catch (Exception e) {
            return false;
        }
        return true;
    }
}

Ответы (0 шт):