• 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
  • 相关阅读:
    python快速入门及进阶
    Git基础及进阶-系统总结
    go语言快速入门教程
    go学习笔记
    win10中,vscode安装go插件排雷指南
    centos7下安装pcre库(pcretest)
    c语言typedef
    虚拟机中安装centos7后无法上网,使用桥接网络+ssh
    强化学习-Q-learning学习笔记
    python基础教程系列1-基础语法
  • 原文地址:https://www.cnblogs.com/woju/p/12535021.html
Copyright © 2020-2023  润新知