zoukankan      html  css  js  c++  java
  • LeetCode 1160. 拼写单词

    题目

    给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。

    假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就

    认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。

    返回词汇表 words 中你掌握的所有单词的 长度之和

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters
    

    示例

    输入:words = ["cat","bt","hat","tree"], chars = "atach"
    输出:6
    解释: 
    可以形成字符串 "cat" 和 "hat",所以答案是 3 + 3 = 6。
    
    

    思路:将字母表和拼写单词的对应整数的位置都存储在

    26位的int数组中,从而进行比较

    代码

    public int countCharacters(String[] words, String chars) {
            int[] chars_count = count(chars);   //统计字母表里面的单词
            int res=0;
            for(String word : words){
                int [] word_count = count(word);    //统计单词的字母出现的次数
                if(cotains(chars_count,word_count)){
                    res += word.length();
                }
            }
            return res;
        }
    
        // 检查是否字母表里面的字母出现次数大于了单词字母出现的次数
        boolean cotains(int []chars_count,int[] word_count){
            for(int i=0; i<26; i++){
                if(word_count[i] > chars_count[i])return false; 
            }
             return true;
        }
    
        // 统计26个字母出现的次数
        int []count(String word){
            int []counter = new int[26];
            for(int i=0; i<word.length(); i++){
                counter[word.charAt(i) - 'a']++;
            }
            return counter;
        }
    

    大家如果感兴趣可以前去手搓

    本分类只用作个人记录,大佬轻喷.

  • 相关阅读:
    oAuth 认证
    Javascript事件循环机制 浅尝手记
    Javascript闭包与作用域this
    SASS笔记
    FragmentActivity和Activity的区别及何时使用两者
    在fragment中获取Application数据
    Android中得到view在父容器中的位置下标
    设置android模拟器每次启动都按一定比例显示
    eclipse 导入web项目包
    拷贝Eclipse Workspace的设置
  • 原文地址:https://www.cnblogs.com/xiaofff/p/12674932.html
Copyright © 2011-2022 走看看