LeetCode 每日一题——1684. 统计一致字符串的数目

1.题目描述

1684. 统计一致字符串的数目

给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。

请你返回 words 数组中 一致字符串 的数目。

示例 1:

输入:allowed = "ab", words = ["ad","bd","aaab","baa","badab"]
输出:2
解释:字符串 "aaab" 和 "baa" 都是一致字符串,因为它们只包含字符 'a' 和 'b' 。

示例 2:

输入:allowed = "abc", words = ["a","b","c","ab","ac","bc","abc"]
输出:7
解释:所有字符串都是一致的。

示例 3:

输入:allowed = "cad", words = ["cc","acd","b","ba","bac","bad","ac","d"]
输出:4
解释:字符串 "cc","acd","ac" 和 "d" 是一致字符串。

2.解题思路与代码

2.1 解题思路

非常简单的一道字符串遍历题,首先我们使用一个长度为 26 的 boolean 型的数组 tmp 存放 allowed 中每个字符是否出现,如果出现就在 tmp[allowed.charAt(i)-'a'] 的位置上设置为 true,表示字母出现过。然后遍历字符串数组 words 并对数组中每个字符串的字符进行判断,如果每个字符在 tmp 中的位置上都是 true,表示每个字符都在 allowed 中存在,统计结果加 1,否则存在不一致的字母,不计数。

2.2 代码

class Solution {
    public int countConsistentStrings(String allowed, String[] words) {
        boolean[] tmp = new boolean[26];
        int ans = 0;
        for (int i = 0; i < allowed.length(); i++) {
            tmp[allowed.charAt(i) - 'a'] = true;
        }
        outer:for (String word : words) {
            for (int i = 0; i < word.length(); i++) {
                if (!tmp[word.charAt(i)-'a']) {
                    continue outer;
                }
            }
            ans++;
        }
        return ans;

    }
}

2.3 测试结果

通过测试

测试结果

3.总结

  • 使用 boolean 类型数组统计 allowed 中字符出现的情况
  • 遍历 words 数组并并 allowed 中的字符进行比较
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容