java - 计算字符串中字符的频率(Java,Performance)
问题描述
问题
我编写了这个程序来检查每个字母在用户输入的字符串中出现的次数。它工作得很好,但是有没有比为每个字符重复一个 26 元素长的数组更有效或替代的解决方案来完成这项任务?
代码
import java.util.Scanner;
public class Letters {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
char[] c = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
int[] f = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
System.out.println("Enter a string.");
String k = sc.nextLine();
String s = k.toUpperCase();
s = s.trim();
int l = s.length();
System.out.println("Checking string = " + s);
char ch;
for (int i = 0; i < l; i++) {
ch = s.charAt(i);
for (int j = 0; j < c.length; j++) {
if (ch == c[j]) {
f[j]++;
}
}
}
System.out.println("Char\tFreq");
for (int i = 0; i < c.length; i++) {
if (f[i] != 0) {
System.out.println(c[i] + "\t" + f[i]);
}
}
}
}
解决方案
您可以通过编写找到字符串中字符的频率
String.length() - String.replace("character", "").length();
推荐阅读
- vba - 使用 VBA 更改 Word 文档中所有表格的文本样式
- pandas - 连接数据集的问题
- ubuntu - 防止超级键进入 Ubuntu 20 中的搜索栏
- azure-machine-learning-studio - Azure ML Studio Designer - 是否可以将管道或管道草稿从一个工作区复制到另一个工作区?
- typescript - 在 Typescript 中将语言代码 (ISO 639-1) 转换为国家代码 (ISO 3166-1 alpha-2)
- python - 在另一个文件中使用程序会给出不同的输出
- c++ - OpenCL clBuildProgram“无法打开文件:C:\Users\?”
- css - 使 Bulma 中的表单字段具有响应性?
- python - Flask、flask_login、pytest:如何设置flask_login 的current_user?
- r - 加载命名空间中的错误(i,c(lib.loc,.libPaths()),