【每日一题DAY21】LC1684统计一致字符串的数目|哈希表

You are given a string allowed consisting of distinct characters and an array of strings words. A string is consistent if all characters in the string appear in the string allowed.

Return the number of consistent strings in the array words.

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

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

被阳务运动无语到的一天…

  • 思路:使用哈希表统计allowed中出现的字母,遍历words中的每个word出现的字母,如果字母都存在yu哈希表中,那么count加1

  • 实现

    class Solution {
        public int countConsistentStrings(String allowed, String[] words) {
            boolean[] table = new boolean[26];
            for (int i = 0; i < allowed.length(); i++){
                table[allowed.charAt(i)-'a'] = true;
            }
            int count = 0;
            for (String word : words){
                boolean flag = true;
                for (char c : word.toCharArray()){
                    if (!table[c-'a']){
                        flag = false;
                        break;
                    }
                }
                if (flag){
                    count++;
                }  
            }
            return count;
        }
    }
    
  • 复杂度

    • 时间复杂度: O ( n + ∑ m i ) O(n+\sum{m_i}) O(n+mi),n为allowed长度,m为word中字符串的长度
    • 空间复杂度: O ( 1 ) O(1) O(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值