码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 1160. 拼写单词

时间:2020-03-20 22:01:30      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:lap   输出   tco   none   flag   ble   button   sci   +=   

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

 

LeetCode 1160. 拼写单词

标签:lap   输出   tco   none   flag   ble   button   sci   +=   

原文地址:https://www.cnblogs.com/woju/p/12535021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!