for (int i = 0; i < s.length(); ++i)
{
if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z')
{
++array[s.charAt(i) - 'A'];
}
}
我理解For循环。 s.length()是26,确切地说是int [26]。所以这个循环将发生26次,0-25。如果i,0-25处的Char在或者是AZ之间它将继续进行++array[s.charAt(i) - 'A'];
从我看到它每个循环添加一次数组,或者每个循环添加一次数组的值,对于String的字符串我所以第一个将是0秒将是2,因为数组从0开始。所以在i -'A'
位置添加一个数组是我感到困惑的地方。
答案 0 :(得分:10)
语句++array[s.charAt(i) - 'A'];
正在递增由s.charAt(i) - 'A'
索引的数组中的值。
这个循环的作用是它计算s
中每个字母的出现次数。
- 'A'
的原因是它“移动”了ascii / unicode值,因此A - Z
的值为0 - 25.因此更适合作为数组索引。
答案 1 :(得分:9)
array
似乎是“每个大写字母的反击”。通过从字符串中的任意字符中减去字符'A'
,您将获得数组中字母的索引:
'A' - 'A' == 0
'B' - 'A' == 1
'C' - 'A' == 2
要理解这一点,您应该理解,Java将char
视为与(unsigned)short
相同。因此,您可以使用char
答案 2 :(得分:1)
计算字符
(伯爵不是历史人物)
答案 3 :(得分:0)
public class ArrayCharOccurence {
static final int ASCII = 256;
static char getMaxOccuringChar(String str) {
int count[] = new int[ASCII];
int len = str.length();
for (int i = 0; i < len; i++)
count[str.charAt(i)]++;
int max = -1;
char result = ' ';
for (int i = 0; i < len; i++) {
if (max < count[str.charAt(i)]) {
max = count[str.charAt(i)];
result = str.charAt(i);
}
}
return result;
}
// Driver Method
public static void main(String[] args) {
String str = "sample string";
System.out.println("Max occurring character is "
+ getMaxOccuringChar(str));
}
}
答案 4 :(得分:0)
++array[s.charAt(i) - 'A'];
计算给定字符串s中每个字符的频率,并将每个字符的频率存储在数组中的特定索引处。
答案 5 :(得分:0)
count [str.charAt(i)] ++实际存储的是什么? [重复] 对于那些有相同相关问题的人,这里的答案是
第一
static final int chars = 256; 静态char count [] = new char [chars];
当我们将此代码转换为图像时,它会变成这样
0 1 2 3 4 5 6 7 8 9 .. .. .. .. .. .. 97 .. 255
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
第二
count [str.charAt(i)] ++;
假设您有str =“ abc” 然后str.charAt(0)将为“ a” 那么count ['a']意味着count [97]为什么?因为java自动将“ a”转换为ASCII码97。 然后,当您像count [97] ++一样递增count [97]的值为0时,它将变为1
0 1 2 3 4 5 6 7 8 9 .. .. .. .. .. .. 97 .. 255
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
如果再次像count [97] ++一样递增,则它将变为2。
0 1 2 3 4 5 6 7 8 9 .. .. .. .. .. .. 97 .. 255
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0
这就是背后的全部秘密。我不介绍其他内容,因为我认为您的问题已得到回答。 如果您想测试我说的是正确的,请使用以下简单代码进行检查
public static void main(String [] argv) {
int[] count = new int[255];
count['a']++;
System.out.println(count['a']);
int counter=0;
for(int i=0;i<count.length;i++) {
System.out.println(counter++ + " " + count[i]);
}
}