LeetCode——1160.拼写单词(Java)

首先统计字母表中的字母个数和单词表中的字母个数,如果 < 则说明背过这个单词了

这张图是来自nettee
上代码:

package LeetCode.OneThousandMore;

public class OneThousandOneHundredAndSixty {
     
    //首先统计字母表中的字母个数和单词表中的字母个数,如果 < 则说明背过这个单词了
    public int countCharacters(String[] words, String chars) {
     
        int len = 0;
        //统计字符串字符的个数
        int [] chars_count = count(chars);
        //统计单词的字符个数
        for (String word : words){
     
            int [] word_count = count(word);
            //判断字符串能否组成单词
            if (judge(chars_count, word_count))
                len += word.length();
        }
        return len;
    }
    //判断是否能组成单词
    private boolean judge(int [] chars_count, int [] word_count){
     
        for (int i = 0; i < 26; i++){
     
            if (chars_count[i] < word_count[i])
                return false;
        }
        return true;
    }
    //统计个数
    private int [] count(String s){
     
        int [] sum = new int[26];
        //计算toCharArray和charAt的效率 toCharArray快
        char temp [] = s.toCharArray();
        //统计每个字符的个数
        for (int i = 0; i < temp.length; i++)
            sum[temp[i] - 'a'] ++;
        return sum;
    }
}

你可能感兴趣的:(LeetCode,字符串,leetcode,算法)