题解 | #统计一句话中重复单词的个数#

统计一句话中重复单词的个数

http://www.nowcoder.com/practice/2128e598b5a5407195c31175b5b33360

题目的主要信息:

  • 统计输入的一句话中不同字母字符出现的次数
  • 使用Map哈希表

具体做法:

既然使用哈希表,我们遍历字符串,对于每个字符,我们首先检查它是否是字母,如果是字母再考虑后续哈希表的行为,非字母跳过就行了。对于字母字符,我们在哈希表中查找它,然后将其value值增加1,如果找不到它就在哈希表中添加一项新的。

alt

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        Map<Character, Integer> map = new LinkedHashMap<Character, Integer>(); //哈希表      
        for(int i = 0; i < line.length(); i++){ //遍历字符串
            char c = line.charAt(i); //对于每个字符
            if(Character.isLetter(c)){ //首先检查是否是字母
                if(map.containsKey(c)) //如果哈希表中有了这个字母
                    map.put(c, map.get(c) + 1); //该记录加1
                else
                    map.put(c, 1); //否则加入一个新的记录
            }
        }
        Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
        for (Map.Entry<Character, Integer> entry : entrys) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}

复杂度分析:

  • 时间复杂度:O(n)O(n),其中nn为字符串长度,遍历整个字符串
  • 空间复杂度:O(1)O(1),哈希表的大小最大为字符集即字母个数,属于常数空间
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
安静的鲸鱼offer...:神仙级别hr,可遇不可求,甚至他可能也是突然有感而发。只能说遇上是件幸事。
秋招开始捡漏了吗
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务