我正在尝试接受a3b3
之类的用户输入并将其解压缩到aaabbb
。这是我提出的代码,它打印a33b
。
String getDecompressedText() {
int i;
int n = 1;
String d = "";
for (i = 0; i < compressedText.length(); i++){
if (Character.isDigit(compressedText.charAt(i)) == true) {
while (n < compressedText.charAt(i)-'0') {
d += compressedText.charAt(i);
n++;
}
}
else
d += compressedText.charAt(i);
}
return d;
答案 0 :(得分:1)
现在是你的算法:
for each character:
if it's not a digit, print it
if it is a digit, print the digit itself "digit - 1" times
不理想。一些问题:
charAt(i-1)
n
,但从未将其重置为1
。您应该在for
循环中执行此操作。n - 1
次字母,因为它一次打印出来,所以这很好StringBuilder
a14
- 2位数的计数而中断。答案 1 :(得分:1)
public static void main(String[] args) {
String compressedText = "a3b3";
int i;
int n = 1;
String d = "";
for (i = 0; i < compressedText.length(); i++) {
if (Character.isDigit(compressedText.charAt(i))) {
while (n < compressedText.charAt(i) - '0') {
d += compressedText.charAt(i - 1);
n++;
}
n = 0;
} else {
d += compressedText.charAt(i);
}
}
System.out.println(d);
}
输出:
aaabbbb
2个问题:
d += compressedText.charAt(i - 1); // Take the previous character, no the '3'
n = 0; // Reset the counter
一些注意事项:
使用StringBuilder
进行循环连接
这仅适用于单位数字(0 - 9)