819. 最常见的单词

819. 最常见的单词
在这里插入图片描述


Java:split() 过滤

class Solution {
   
    public String mostCommonWord(String paragraph, String[] banned) {
   
        String s = paragraph.replaceAll("\\p{Punct}", " ");  // 去除所有标点符号
        String arr[] = s.split(" +");  // "a, a, a, a, b,b,b,c, c" 遇到这种案例就很恶心,不按照正规的格式来出牌!
        Map<String, Integer> map = new HashMap<>();
        Set<String> set = new HashSet<>();
        for (String str : banned) {
   
            set.add(str);
        }
        for (int i = 0; i < arr.length; ++i) {
   
            String ss = arr[i].toLowerCase();
            if (!set.contains(ss)) {
   
                map.put(ss, map.getOrDefault(ss, 0) + 1);
            }
        }
        List<String> list = new ArrayList<>(map.keySet());
        Collections.sort(list, (a, b) -> map.get(b).compareTo(map.get(a)));
        
        return list.get(0);
    }
}

Java:直接筛选字符

class Solution {
   
    public String mostCommonWord(String paragraph, String[] banned) {
   
        Set<String> bannedSet = new HashSet<String>();
        for (String word : banned) {
   
            bannedSet.add(word);
        }
        int maxFrequency = 0;
        Map<String, Integer> frequencies = new HashMap<String, Integer>();
        StringBuffer sb = new StringBuffer();
        int length = paragraph.length();
        for (int i = 0; i <= length; i++) {
   
            if (i < length && Character.isLetter(paragraph.charAt(i))) {
   
                sb.append(Character.toLowerCase(paragraph.charAt(i)));
            } else if (sb.length() > 0) {
   
                String word = sb.toString();
                if (!bannedSet.contains(word)) {
   
                    int frequency = frequencies.getOrDefault(word, 0) + 1;
                    frequencies.put(word, frequency);
                    maxFrequency = Math.max(maxFrequency, frequency);
                }
                sb.setLength(0);
            }
        }
        String mostCommon = "";
        Set<Map.Entry<String, Integer>> entries = frequencies.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
   
            String word = entry.getKey();
            int frequency = entry.getValue();
            if (frequency == maxFrequency) {
   
                mostCommon = word;
                break;
            }
        }
        return mostCommon;
    }
}

相关推荐

  1. Leetcode8-常见单词819

    2023-12-17 22:46:04       55 阅读
  2. 句子中单词

    2023-12-17 22:46:04       61 阅读
  3. Healthcare医疗健康领域常见几个单词

    2023-12-17 22:46:04       35 阅读
  4. 面试算法65:单词编码

    2023-12-17 22:46:04       60 阅读
  5. OWASP 之常见安全漏洞

    2023-12-17 22:46:04       41 阅读
  6. 常见基因表达度量单位(ChatGPT)

    2023-12-17 22:46:04       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 22:46:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 22:46:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 22:46:04       82 阅读
  4. Python语言-面向对象

    2023-12-17 22:46:04       91 阅读

热门阅读

  1. 高防CDN在游戏服务商中的关键意义

    2023-12-17 22:46:04       60 阅读
  2. linux查看系统位数

    2023-12-17 22:46:04       57 阅读
  3. Fortune Telling

    2023-12-17 22:46:04       71 阅读
  4. Linux计划任务

    2023-12-17 22:46:04       44 阅读
  5. Rust做一个图片服务器有多难?

    2023-12-17 22:46:04       56 阅读