Java使⽤数组、⼆维数组、HashMap统计字符串中每个字符出现的次数
要求:给定⼀个字符串,统计每个字符出现次数
第⼀种思路,利⽤HashMap的特性,key不能重复,⽤来储存出现字符,value可以刷新,⽤来储存字符出现字数
1public static void main(String[] args) {
2//字符串中各字母个数
3        String s = "safhuiwganlndvlznilenflawenvlav";
4        Map<Character, Integer> map = new HashMap<>();
5char[] c = s.toCharArray();//将字符串转化为字符数组
6for (int i = 0; i < c.length; i++) {
7int count = 1;//初始计数为1
8if (ainsKey(c[i])) {//判断map中是否含该字符
9                count += (c[i]);//原计数+1
10                map.put(c[i], count);
11            } else {//不含该字符直接存⼊,计数为1
12                map.put(c[i], count);
13            }
14        }
15        System.out.println("字符串中各字符个数:");
java中字符串转数组16        System.out.println(map);
17    }
字符串中各字符个数:
{a=4, d=1, e=2, f=2, g=1, h=1, i=2, l=5, n=5, s=1, u=1, v=3, w=2, z=1}
第⼆种思路,使⽤s.length*2的int⼆维数组,每⼀⾏储存字符的码值和出现次数,注意字符0的存储
public static void main(String[] args) {
String s = "safhuiwganlndvlznilenflawenvlav0765054162011";
char[] c = s.toCharArray();
int[][] a = new int[s.length()][2];
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < a.length; j++) {
int count = 1;
if (c[i] == a[j][0] && a[j][1] > 0) {//如果数组已经包含该字符
a[j][1] += count;//计数+1
break;
} else if (a[j][0] == 0 && a[j][1] == 0) {//如果该字符没出现过,遍历到空位置置⼊字符
a[j][0] = c[i];
a[j][1] = count;
break;
}
}
}
System.out.println("字符串中各字符个数:");
for (int i = 0; i < a.length; i++) {
if (a[i][1] > 0) {
System.out.println((char) a[i][0] + ":" + a[i][1]);
}
}
}
字符串中各字母个数:
s:1
a:4
f:2
h:1
u:1
i:2
w:2
g:1
n:5
l:5
d:1
v:3
z:1
e:2
0:3
7:1
6:2
5:2
4:1
1:3
2:1
第三种思路,通过字符特性,每个字符都有⼀个unicode码值,建⽴65535长度的⼀维数组,数组下标既为字符储存位置,数组内容存储出现次数
@Test
public void work() {
String string = "alksdflaksjdflkasjfd2398407239874238974238974我是汉字我是汉字我是汉字我是汉字我是汉字我是汉字我是汉字我是汉字我是汉字我是汉字我是汉字328╮(╯_╰)╭23回去时间3lkjalksjdflkajsdf";
int[] arr = new int[65535];// ⼤数组, 即使所有字符出现也不怕冲突
for (int i = 0; i < string.length(); i++) {
char ch = string.charAt(i);
arr[ch]++; // ⽤字符码值直接作为下标, 修改它对应的次数
}
System.out.println("字符串中各字符个数:");
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 0) {
System.out.println((char)i + " : " + arr[i]);
}
}
}
字符串中各字符个数:
( : 1
) : 1
0 : 1
2 : 6
3 : 7
4 : 4
7 : 4
8 : 5
9 : 4 _ : 1 a : 5 d : 5 f : 5 j : 5
k : 6 l : 6
s : 5╭ : 1╮ : 1╯ : 1╰ : 1去 : 1回 : 1字 : 11我 : 11时 : 1是 : 11汉 : 11间 : 1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。