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

    1160. 拼写单词

    难度简单

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

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

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

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

    示例 1:

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

    示例 2:

    输入:words = ["hello","world","leetcode"], chars = "welldonehoneyr"
    输出:10
    解释:
    可以形成字符串 "hello" 和 "world",所以答案是 5 + 5 = 10。
    

    提示:

    1. 1 <= words.length <= 1000
    2. 1 <= words[i].length, chars.length <= 100
    3. 所有字符串中都仅包含小写英文字母

    思路:利用ASCII码表来进行存储,先将提供的字母个数都存起来,然后用words里的单词分别依次存储并与chars里的字母个数依次对比,利用flag来做标记,并将符合条件的单词字母都加到一起,最后返回答案。

    int countCharacters(char ** words, int wordsSize, char * chars){
        int a[26]={0},b[26]={0};
        int n,sum=0;
        int j,i,flag=1,k;
        n=strlen(chars);
        for(int i=0;i<n;i++){
            b[chars[i]-'a']++;
        }
        for(i=0;i<wordsSize;i++){
            n=strlen(words[i]);
            for(j=0;j<n;j++){
                a[words[i][j]-'a']++;
                if(a[words[i][j]-'a']>b[words[i][j]-'a']){
                    flag=0;
                    break;
                }
            }
                if(flag==1){
                    sum+=n;
                }
                flag=1;
                for(k=0;k<26;k++){
                    a[k]=0;
            }
        }
        return sum;
    }
    View Code
  • 相关阅读:
    Charles:rewrite重写功能
    Vue中provide和inject 用法
    vue中install方法
    vue自定义组件(通过Vue.use()来使用)即install的使用
    Eelectron 中的remote模块
    理解Vue中的Render渲染函数
    Vue.js中this.$nextTick()的使用
    postman请求本地接口Error: connect ECONNREFUSED 127.0.0.1:8083
    1016 Phone Bills (25 分)
    CF842E Nikita and game
  • 原文地址:https://www.cnblogs.com/woju/p/12535021.html
Copyright © 2011-2022 走看看