Leecode 1160. 拼写单词

简介: Leecode 1160. 拼写单词
class Solution {
    public int countCharacters(String[] words, String chars) {
        int[] charsOfCase = new int[26];//统计字符表中的字符
        int count = 0;//单词长度之和
        for(char c : chars.toCharArray()){//统计字符表中的字符
            charsOfCase[c-'a']++;
        }
        for(String str : words){
            int[] temp = new int[26];
            boolean flag = true;
            for(char c : str.toCharArray()){//存储统计词汇表中单词的字符
                temp[c-'a']++;
            }
            for(int i = 0; i < charsOfCase.length; i++){//对比两个统计数据
                if(temp[i] > charsOfCase[i]){
                    flag = false;
                    break;
                }
            }
            if(flag) count += str.length();
        }
        return count;
    }
}

这种执行效率不高

我们可以把字母表中的长度与词汇表中每一个词汇的长度对比放在存储统计词汇表中单词的字符前面,这样子可以减少一些比较,缩短了执行时间

class Solution {
    public int countCharacters(String[] words, String chars) {
        int len = 0;
        char[] cs = new char[26];
        for (char c : chars.toCharArray()) {
            cs[c - 'a']++;
        }
        for (String str : words) {
            boolean flag = true;
            //如果长度大于chars数组,直接不用比较
            if (chars.length() < str.length()) {
                flag = false;
            } else {
                char[] temp = new char[26];
                for (char t : str.toCharArray()) {
                    temp[t - 'a']++;
                    if(temp[t - 'a'] > cs[t - 'a']) {
                        flag = false;
                        break;
                    }
                }
            }
            if (flag) {
                len += str.length();
            }
        }
        return len;
    }
}


相关文章
|
17天前
884. 两句话中的不常见单词
884. 两句话中的不常见单词
|
17天前
|
Python
每日一题 2047. 句子中的有效单词数
每日一题 2047. 句子中的有效单词数
|
22天前
|
存储 算法 数据可视化
LeetCode127题:单词接龙
LeetCode127题:单词接龙
|
2月前
【力扣】1832.判断句子是否为全字母句
【力扣】1832.判断句子是否为全字母句
|
2月前
每日一题(数字颠倒,单词倒排)
每日一题(数字颠倒,单词倒排)
19 1
|
12月前
|
C语言
【每日一题】 将一句话单词倒置,标点不倒置
【每日一题】 将一句话单词倒置,标点不倒置
161 0
【每日一题】 将一句话单词倒置,标点不倒置
|
2月前
leetcode-884:两句话中的不常见单词
leetcode-884:两句话中的不常见单词
18 0
|
8月前
|
移动开发 算法 前端开发
单词接龙 II
单词接龙 II
44 0
单词接龙 II
|
7月前
|
关系型数据库 Java Android开发
IELTS学习(002) - 单词(自然地理篇)
IELTS学习(002) - 单词(自然地理篇)
54 0
|
12月前
|
机器学习/深度学习
1220:单词接龙
1220:单词接龙