问题是:给定一个字符串: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条件。听起来可能做得不好,但是我已经尝试了很长时间了,但是在通过这里发表之前无法通过。
请尝试以下操作:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句