java - 如何查找二维字符数组中的字符频率?

标签 java arrays character frequency

我正在尝试创建一个搜索字符数组的程序。如果有一个重复的字符,应该显示它。

我尝试过创建一个三重循环 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 次。

  1. 从一张空 map 开始
  2. 迭代数组并针对每个char
    • 获取 char 的小写版本,因为您不区分大小写
    • 如果 map 没有具有该字符的键,请向您的 map 添加一个条目 (char, 1)
    • 否则,请增加与 map 中 char 关联的数字

如果您需要出现多次的字符列表,您可以迭代映射并过滤掉值为 1 的字符。

关于java - 如何查找二维字符数组中的字符频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57513521/

相关文章:

javascript - 在 React 中的 .map 迭代中的单个元素上使用 onMouseEnter

php - 从字符串 PHP 中删除前 3 个字符和后 3 个字符

iphone - 在 iPhone 上的 UILabel 中查找特定字符的位置

linux - 如何在 Linux 内核模块中读/写字符设备

java - Python 的 subprocess.Popen() 的 Java 等价物是什么?

c++ - 将 char* 分配给字符串而不复制

java - Android AsyncTask 似乎在 onPreExecute 之后停止

arrays - 如何根据 Ruby 数组的内容删除项目?

java - 来自属性文件 : Java 的字符串主机名

java - Cassandra 的服务器在 OS X 上启动错误