Java 字符串字符计数统计代码详解
这段代码使用 Java 语言实现了一个字符串字符计数统计功能。代码中,变量 count 是一个长度为 53 的整型数组,用于存储每个字符出现的次数。字符串 s 是要统计的字符串,变量 n 记录了字符串的长度。
代码通过遍历字符串的每个字符,并根据字符类型和上下文关系,来确定每个字符出现的次数。具体逻辑如下:
- 遍历字符串的每个字符,使用变量
c1记录当前字符。 - 首先判断当前字符是否是倒数第二个或倒数第一个字符,因为这两个字符需要单独判断。如果是倒数第二个字符,则
tcount的值为 3;如果是倒数第一个字符,则tcount的值为 1(如果与前一个字符相同)或 3(如果与前一个字符不同)。 - 如果当前字符不是倒数第二个或倒数第一个字符,则根据当前字符和后两个字符的关系,来确定
tcount的值。如果当前字符与下一个字符相同,则tcount的值为 1;如果当前字符与下一个字符不同,但与下下个字符相同,则tcount的值为 2;如果当前字符与下一个字符和下下个字符都不同,则tcount的值为 3。 - 根据当前字符的类型(大写字母、小写字母或其他字符),更新计数器
count的对应位置。如果当前字符是大写字母,则将tcount的值加到count数组中对应位置上(通过将字符的 ASCII 码减去 64 得到对应的数组索引);如果当前字符是小写字母,则将tcount的值加到count数组中对应位置上(通过将字符的 ASCII 码减去 70 得到对应的数组索引);如果当前字符不是字母,则将tcount的值加到count数组的第一个位置上。 - 在遍历完所有字符后,再次遍历
count数组,输出每个字符的计数结果。如果某个位置上的计数结果不为 0,则输出对应字符和计数结果。
代码示例:
int[] count = new int[53];
String s = 'AAABCBCB';
int n = s.length();
char c1;
for (int i = 0, tcount = 0; i < n; i++) {
c1 = s.charAt(i);
// 最后两个键单独判断
if (i > n - 3) {
if (i > n - 2) {
tcount = 3;
} else {
tcount = c1 == s.charAt(i + 1) ? 1 : 3;
}
} else {
tcount = c1 == s.charAt(i + 1) ? 1 : c1 == s.charAt(i + 2) ? 2 : 3;
}
// 更新计数器
if (c1 >= 'A' && c1 <= 'Z') {
count[c1 - 64] += tcount;
} else if (c1 >= 'a' && c1 <= 'z') {
count[c1 - 70] += tcount;
} else {
count[0]++;
}
tcount = 0;
}
for (int i = 1; i < count.length; i++) {
c1 = (char) (i > 26 ? i + 70 : i + 64);
if (count[i] != 0) {
System.out.println(c1 + "位置的烤串转了" + count[i] + "圈");
}
}
这段代码的逻辑清晰易懂,可以作为学习 Java 字符串处理和字符计数统计的示例代码。
原文地址: https://www.cveoy.top/t/topic/4yv 著作权归作者所有。请勿转载和采集!