#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. Уверен, что нет. Если у вас также могут быть многозначные числа, вам нужно собрать все цифры и преобразовать их в число. Я просто взял то, что у вас изначально было в программе.