• 【Leetcode】拼写单词(每日一题)


    题目链接:拼写单词


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

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

    注意:每次拼写时,chars 中的每个字母都只能用一次。

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

    题解:暴力。类似hash?用一个数组统计chars的次数,再复制这个数组,每次在words里的word去遍历,出现不相同的就标记。能顺利遍历就记录一下这个word的长度。


    代码:

     1 class Solution {
     2 public:
     3     int mp[26] = {0};   
     4 
     5     int countCharacters(vector<string>& words, string chars) {
     6         int len = chars.size();
     7         for(int i = 0; i < len; i++){
     8             mp[chars[i] - 'a']++;
     9         }   //统计
    10 
    11         int ans = 0;
    12         int res[26];    //复制表
    13         for(int i = 0; i < words.size(); i++){
    14             string word = words[i];
    15             memcpy(res,mp,sizeof(mp));
    16             int flag = 1;
    17             for(int j = 0 ; j < word.size(); j++){
    18                 if(res[word[j] - 'a'] == 0){    //如果没有这个字母
    19                     flag = 0;
    20                     break;
    21                 }
    22                 else    res[word[j] - 'a']--;
    23             }
    24             if(flag)    ans += word.size();
    25         }
    26 
    27         return ans;
    28     }
    29 };
  • 相关阅读:
    实验二
    个人简介及对未来的想法
    读《构建之法》心得体会
    作业2
    个人简介
    第六次作业
    第二次作业
    个人简历
    购物系统测试缺陷报告
    读《构建之法》心得体会
  • 原文地址:https://www.cnblogs.com/Asumi/p/12513682.html
Copyright © 2020-2023  润新知