当前位置:   article > 正文

统计英文字符串里重复次数最多的单词JAVA_由空格和字母组成的字符串中出现次数最多的单词

由空格和字母组成的字符串中出现次数最多的单词

一次JAVA作业罢了
给定一段英文(看到内容感叹可怜的川宝倒了
我们想计算重复出现最多的单词,就会想要有两个信息
一是单词,二是单词出现的个数
HashMap提供的键值对存储方式可以很好地解决这个问题
key存储每个单词,value存储每个单词出现的次数
然后遍历查重计数,找出最大值就是找出了出现最多次数的单词

这只是一种思路,中间还有一些细节需要处理

我们从头遍历每个单词,但注意到英文段落中会出现逗号,句号,空格,这些都会影响我们遍历时的判断,谁都不想自己的单词中混有标点符号吧

那能怎么办呢?

将这些“特殊符号”作为划分英语字段的依据,比如两个单词之间的空格,我们将其消除,便得到了两个单词,将其存储进我们的字符串数组,重复这个操作,我们可以得到所有的单词集合

将字符串数组中的所有元素put进HashMap的value中,好家伙,我们现在需要处理key了(就是每个单词出现的次数

我们很清楚每次从找HashMap中到相同的单词就从HashMap中对应value的key进行加一的操作

没找到呢?

就说明是新出现的单词,我们对其进行初始化,即这个单词出现了第一次

遍历这个段落并进行上述的操作后,我们得到的HashMap就是存储了每个单词出现次数的Map

接下来找出出现最多次的单词

我们应该考虑多种情况,比如说出现最多次数的单词不止一个

首先我们得先确定最大值吧,定义一个max,遍历更新max值

然后遍历HashMap中的键值对,找到与key相对应的value,将其输出
就找到了所有的出现最多次数的单词

当然我们还有要注意的点,比如后面求最大值的遍历的依据是不存在重复单词的字符串数组,这要求我们在遍历原文段落的时候就构建好一个存储不重复单词的字符串数组

代码如下:

    public static void main(String[] args) {
        int max = 0;
        Map<String,Integer> map = new HashMap<String, Integer>();
        List<String> strings = new ArrayList<String>();
        String[] str = "Donald Trump has carried the crucial battleground states of Florida, Texas Ohio and Iowa but Joe Biden has won Arizona The contests in Michigan and Wisconsin are close as postal votes are counted Because of the many postal ballots cast in this election some states’ results may not be known for days or even weeks More than 100 million Americans voted early or by post suggesting a record turnout Democrats’ hopes gaining control of the Senate are fading after Republicans held on to closely fought seats in South Carolina and Iowa Control of the Senate may come down to a Georgia special election that will be decided in a run-off in January".toLowerCase().split(" |, |\\.");
        for(String s : str){
            if(map.containsKey(s)){
                map.put(s,map.get(s)+1);
            }else{
                map.put(s,1);
                strings.add(s);
            }
        }
        for(String s :str){
            if(max < map.get(s))
                max = map.get((s));
        }
        for(String s : strings){
            if(max == map.get(s)){
                System.out.println(s+"出现了"+max+"次");
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

os:讲得不好的地方还请大家多多指正,希望能一起学习交流

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/527241
推荐阅读
相关标签
  

闽ICP备14008679号