1071.Speech Patterns java

本文介绍了一种方法,通过将输入字符串小写并清理非字母和数字字符后,利用哈希表统计每个单词出现的次数,找出出现次数最多的单词并按字母顺序排序输出。
摘要由CSDN通过智能技术生成

哈希表问题:只需先将字符串全部小写再将非字母和数字的字符转话为空格,再按空格分割,得到输入的数组,用哈希表 键:字符名 值:次数存储,再将最高次数的取出放入列表按照字符串大小排序即可

注:max_count初始为1因为至少有一个word

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
        String input[]=bufferedReader.readLine().toLowerCase().replaceAll("[^a-z0-9]+", " ").split(" ");
        HashMap<String,Integer>wordmap=new HashMap<>();
        int cur_count=0,max_count=1;
        for (int i=0;i<input.length;i++){
            if (wordmap.containsKey(input[i])){
                cur_count=wordmap.get(input[i])+1;
                wordmap.put(input[i],cur_count);
                if (cur_count>max_count){
                    max_count=cur_count;
                }
            }else {
                wordmap.put(input[i],1);
            }
        }
        ArrayList<String>ans=new ArrayList<>();
        for (String str:wordmap.keySet()){
            if (wordmap.get(str)==max_count){
                ans.add(str);
            }
        }
        Collections.sort(ans);
        System.out.println(ans.get(0)+" "+max_count);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值