写一函数打印给定字符串中各字符个数,字符串中只包含大小写字符与数字
程序员文章站
2022-06-19 12:54:16
写一函数打印给定字符串中各字符个数,字符串中只包含大小写字符与数字例:如参数为 "abcxyzAbc",则输出:a 1b 2c 2x 1y 1z 1A 1方法一(数组形式),不按照题目小写字母在前,大写字母在后的顺序,单单是为了统计各字符出现的次数:public static void main(String[] args) {Scanner sc = new Scanner(System.in);String a = sc.nextLine();...
写一函数打印给定字符串中各字符个数,字符串中只包含大小写字符与数字
例:如参数为 "abcxyzAbc",则输出:
a 1
b 2
c 2
x 1
y 1
z 1
A 1
方法一(数组形式),不按照题目小写字母在前,大写字母在后的顺序,单单是为了统计各字符出现的次数:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
int[] b = new int[123];
for(char c : a.toCharArray()) {
b[c] ++;
}
for(int i=48;i<=122;i++) {
if(b[i]==0) {
}else {
System.out.println((char)i+" "+b[i]);
}
}
}
方法二(数组形式),按照题目小写字母在前,大写字母、数字在后的顺序,统计各字符出现的次数,分开写for循环即可:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
int[] b = new int[123];
for(char c : a.toCharArray()) {
b[c] ++;
}
for(int i=97;i<=122;i++) {
if(b[i]==0) {
continue;
}
char c = (char)i;
System.out.println(c+" "+b[i]);
}
for(int i=65;i<=90;i++) {
if(b[i]==0) {
continue;
}
char c = (char)i;
System.out.println(c+" "+b[i]);
}
for(int i=48;i<=57;i++) {
if(b[i]==0) {
continue;
}
char c = (char)i;
System.out.println(c+" "+b[i]);
}
}
方法三(Map集合形式): 不按照题目小写字母在前,大写字母在后的顺序,单单是为了统计各字符出现的次数:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < a.length(); i++) {
if (map.get(a.charAt(i)) != null) {
int num = map.get(a.charAt(i));
num++;
map.put(a.charAt(i), num);
} else {
map.put(a.charAt(i), 1);
}
}
Object[] array = map.entrySet().toArray();
for (int i = 0; i < array.length; i++) {
String[] split = array[i].toString().split("=");
System.out.println(split[0] + " " + split[1]);
}
}
本文地址:https://blog.csdn.net/ls_wifi/article/details/111881732