我正在尝试创建一个搜索字符数组的程序。如果有一个重复的字符,应该显示它。
我尝试过创建一个三重循环 1 遍历字符数组,然后剩下 2 个将每个字母相互比较
public static void main(String[] args) {
char [][] tab = new char[][]{
{'S','a','m','s','u','n','g'},
{'N','o','k','i','a'},
{'A','p','p','l','e'},
{'B','l','a','c','k','B','e','r','r','y'},
{'A','l','c','a','t','e','l'},
{'S','o','n','y'},
{'J','o','l','l','a'}};
Litery(tab);
}
public static void Litery(char tab[][])
{
int[] freq = new int[tab.length];
int counter=0;
for(int i=0;i<7;i++)
{
int size = tab[i].length;
for(int j=0;i<tab.length;i++)
{
counter=0;
freq[i] = 1;
for(int z = j+1;z<tab[j].length;z++)
{
if(tab[j] == tab[z])
{
freq[i]++;
}
}
}
}
for(int i=0;i<tab.length;i++)
{
if(freq[i] > 1)
{
System.out.println(tab[i]);
}
}
}
我希望输出是 三星 苹果 黑莓 阿尔卡特 乔拉 大小写并不重要 预先感谢您!
最佳答案
使用 HashMap ,其键是数组中的值,值是该值出现的 num 次。
- 从一张空 map 开始
- 迭代数组并针对每个
char
- 获取
char
的小写版本,因为您不区分大小写 - 如果 map 没有具有该字符的键,请向您的 map 添加一个条目 (
char
, 1) - 否则,请增加与 map 中
char
关联的数字
- 获取
如果您需要出现多次的字符列表,您可以迭代映射并过滤掉值为 1 的字符。
关于java - 如何查找二维字符数组中的字符频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57513521/