Не удается расшифровать строку, за буквами которой следует их частота

#java #string

#java #строка

Вопрос:

Для данной строки, которая содержит символ и количество раз, когда этот символ появлялся, расшифруйте до полной строки. Во время кодирования, если символ появляется только один раз, то рядом с этим символом не будет числа.

Ввод: "a5br3"
Вывод: "aaaaabrrr"

Я получаю вывод в виде :

 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
  

Верна ли моя логика? Что не так с моим кодом?

 public String func (String str){
    if(str==null){
        return null;
    }
    String result="";
    for(int i=0;i<str.length();i  ){
        char c= str.charAt(i);
        if(Character.isLetter(c)){
            result =str.charAt(i);
        }
        else if(Character.isDigit(c)){
            for(int j=0;j<c;j  ){
                result =str.charAt(i-1);
            }
        }
    }

    return resu<
}
  

Ответ №1:

Вы перепутали числовое значение цифры с ее символьным кодом. Более того, поскольку символ уже добавлен один раз к строке, нам нужно добавить на одну копию меньше во время цикла. Вы можете использовать код, подобный этому:

 for(int j=1;j<(c - '0');j  ) ...
  

Комментарии:

1. для этого ввода: Ввод: «a10br3a3» Вывод: «aaaaaaaaaabrrraaa»

2. Для этого ввода: «a10br3a3» Фактический вывод iis: «aaaaaaaaaabrrraaa», но я получаю abrrraaa………. он не принимает 10 за единственную цифру……

3. Уверен, что нет. Если у вас также могут быть многозначные числа, вам нужно собрать все цифры и преобразовать их в число. Я просто взял то, что у вас изначально было в программе.