携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情
题目描述
键盘出现了一些故障,有些字母键无法正常工作。而键盘上所有其他键都能够正常工作。
给你一个由若干单词组成的字符串 text ,单词间由单个空格组成(不含前导和尾随空格);另有一个字符串 brokenLetters ,由所有已损坏的不同字母键组成,返回你可以使用此键盘完全输入的 text 中单词的数目。
来源:力扣(LeetCode)
- 示例 1
输入:text = "hello world", brokenLetters = "ad"
输出:1
解释:无法输入 "world" ,因为字母键 'd' 已损坏。
- 示例 2
输入:text = "leet code", brokenLetters = "lt"
输出:1
解释:无法输入 "leet" ,因为字母键 'l' 和 't' 已损坏。
- 示例 3
输入: text = "leet code", brokenLetters = "e"
输出: 0
解释: 无法输入任何单词,因为字母键 'e' 已损坏。
提示:
- 1 <= text.length <= 104
- 0 <= brokenLetters.length <= 26
- text 由若干用单个空格分隔的单词组成,且不含任何前导和尾随空格
- 每个单词仅由小写英文字母组成
- brokenLetters 由 互不相同 的小写英文字母组成
思路分析
据题意可知,题目给出一段句子字符串text和几个坏掉的键盘字符brokenLetters,问这段话中有几个单词是打不出来的。为啥打不出来呢?键盘的几个键坏了,能在键盘打出这几个字符串来才有鬼。
对于这道题可以暴力解决掉它,我们需要取到text和brokenLetters中的每个字符做对比;将text拆成多个单词,循环这些单词,判断这个单词的每个字符是不是有在brokenLetters中,若是有这个单词就不能完整打出来,否则就可以;只要累计计算单词的数量就可以了。
AC代码
function solution(text, brokenLetters) {
let newArr = text.split(' ');
const set = new Set(brokenLetters);
let total = 0;
for( let item of newArr) {
let isHas = false;
for(let i=0; i<item.length; i++) {
if(set.has(item[i])) {
isHas = true;
break;
}
}
if(!isHas) total++
}
console.log(total);
}
let text = "hello world doses lijul", brokenLetters = "ad";
solution(text, brokenLetters)