快速搭建外贸网站,wordpress批量添加文章,滕州做网站的,社交网站第一步怎么做题1 拼写单词
描述 给你一份『词汇表』#xff08;字符串数组#xff09; words 和一张『字母表』#xff08;字符串#xff09; chars。 假如你可以用 chars 中的『字母』#xff08;字符#xff09;拼写出 words 中的某个『单词』#xff08;字符串#xff09;…题1 拼写单词
描述 给你一份『词汇表』字符串数组 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 所有字符串中都仅包含小写英文字母 实现
class Solution {public int countCharacters(String[] words, String chars) {int len 0; //记录字符个数int[] cs new int[26];//用int数组记录字符数 记录charsfor(char c : chars.toCharArray()){cs[c-a]; //以字母顺序作为索引}for(String word: words){boolean flag true;if(chars.length() word.length()){flag false;}else{int[] temp new int[26];for(char c: word.toCharArray()){//遍历单词//依次存储统计词汇表中每个单词的字符temp[c-a];if(temp[c-a] cs[c-a]){//如果单词需要的字母数大于chars提供的字母数flag false;//匹配失败break;}}}if(flag){//匹配成功len word.length();//结果加上当前单词的字符数}}return len;}
}笔记
妙在借用字母的排列顺序可以用int数组中的位置信息表示字母而不需要用map再来存键值String 转 Char[]chars.toCharArray()for循环的写法遍历数组 for(元素类型 元素标志名: 数组名) for(String word: words)由于字母只能使用一次该问题可以转化为字母数量的比较数量足够即可组成单词否则不可以。