问题是: 给定一个字符串:aaaBBB
我需要打印:a3B3 (计算给定字符串中每个字母的出现次数)。
我尝试了以下操作:
String x = "aaaBBB";
char[] c = x.toCharArray();
StringBuilder sb = new StringBuilder();
int count = 1;
System.out.println(c.length);
for (int i = 0; i < c.length; i++) {
if (c[i] == c[i+1]) {
count++;
} else {
sb.append(c[i]).append(count);
count = 1;
}
}
System.out.println(sb);
在上一次迭代中,当我用c [i + 1]检查c [i]时,我得到了ArrayIndexOutOfBounds异常(很明显,因为索引i + 1不存在)。
我想知道一些避免更改此异常的方法,而不更改if条件。 可能听起来像是一项糟糕的研究,但在将其发布到此处之前,我已经尝试了一段时间,但无法通过。
答案 0 :(得分:0)
尝试以下操作:
String x = "aaaaBBBcDDDDD";
char[] c = x.toCharArray();
StringBuilder sb = new StringBuilder();
int count = 1;
char ch = c[0];
for (int i = 1; i < c.length; i++) {
if (c[i] == ch) {
count++;
} else {
sb.append(ch).append(count);
ch = c[i];
count = 1;
}
}
sb.append(ch).append(count);
System.out.println(sb);
打印
a4B3c1D5