zoukankan      html  css  js  c++  java
  • 【LeetCode】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 <= words.length <= 1000
    • 1 <= words[i].length, chars.length <= 100
    • 所有字符串中都仅包含小写英文字母

    思路

    将字母表放入哈希表中,因为都为小写字母,所有使用数组模拟哈希表,然后对字符串数组的每个单词判断是否在字母表中,如果在则加上长度。

    代码

    时间复杂度:O(n^2)
    空间复杂度:O(1)

    class Solution {
    public:
        int countCharacters(vector<string>& words, string chars) {
            vector<int> hash(26);
            int res = 0;
            for (char c : chars) {
                ++hash[c - 'a'];
            }
            for (string s : words) {
                vector<int> hash_copy(hash);
                int i;
                for (i = 0; i < s.size(); ++i) {
                    if (hash_copy[s[i] - 'a'] == 0) break;
                    --hash_copy[s[i] - 'a'];
                }
                if (i == s.size()) res += s.size();
            }
            return res;
        }
    };
    
  • 相关阅读:
    性能学习总结
    xpath的不稳定性
    jenkins 打包时,提示字符不可映射字符
    jenkins 远程部署失败 控制台部署成功
    QTP ExecuteFile应用外部脚本时报“无效字符”错误_Ealge_新浪博客
    Tips:getroproperty调试可以通过,但是运行不可以
    在mac上搭建octopress+github pages博客
    SDWebImage源码分析
    提高XCode编译速度
    iOS app调试
  • 原文地址:https://www.cnblogs.com/galaxy-hao/p/12513846.html
Copyright © 2011-2022 走看看