马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。
假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。
留意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。
返回词汇表 words 中你掌握的所有单词的 长度之和。
示例 1:
- <strong>输入:</strong>words = ["cat","bt","hat","tree"], chars = "atach"
- <strong>输出:</strong>6
- <strong>解释: </strong>
- 可以形成字符串 "cat" 和 "hat",所以答案是 3 + 3 = 6。
复制代码 示例 2:
- <strong>输入:</strong>words = ["hello","world","leetcode"], chars = "welldonehoneyr"
- <strong>输出:</strong>10
- <strong>解释:</strong>
- 可以形成字符串 "hello" 和 "world",所以答案是 5 + 5 = 10。
复制代码 提示:
- 1 <= words.length <= 1000
- 1 <= words.length, chars.length <= 100
- 所有字符串中都仅包罗小写英笔墨母
思绪一
1.number用于累计可以被chars完全删除的单词的总长度。index用于存储当前处理的单词的长度。
2.使用外层循环遍历words数组中的每个单词。在处理每个单词之前,先将该单词的长度存储在index变量中。内层循环遍历chars字符串中的每个字符。使用replaceFirst方法尝试删除words中出现的chars.charAt(j)字符的第一个匹配项。
3.如果经过更换操作后,words变为空字符串,则表示该单词可以完全被chars中的字符组合删除。在这种情况下,将原始单词的长度(存储在index中)加到number上,并跳出内层循环。方法最终返回所有能被chars中字符完全删除的单词的长度之和。
代码展示
- public static int countCharacters(String[] words, String chars) {
- int number=0;
- int index;
- for(int i=0;i<words.length;i++){
- index=words[i].length();//记录本次字符串的长度。
- for(int j=0;j<chars.length();j++){
- words[i] = words[i].replaceFirst(String.valueOf(chars.charAt(j)), "");
- if(words[i].isEmpty()){//如果字符串全部成功替换,则记录下来。
- number=number+index;
- break;//结束内层循环。
- }
- }
- }
- return number;
- }
- }
复制代码 缺点:时间复杂度和空间复杂度出奇的高。能通过也是奇迹。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |