题目地址:
https://leetcode.com/problems/maximum-number-of-words-you-can-type/
给定一个字符串 s s s,其是以空格隔开的若干单词,再给定一个串 t t t表示不能打的字符。问总共有多少个单词可以完整打出。
先将 s s s给按空格划分,然后依次看一下含不含 t t t里的字符即可。代码如下:
import java.util.HashSet;
import java.util.Set;
public class Solution {
public int canBeTypedWords(String text, String brokenLetters) {
String[] strs = text.split(" ");
Set<Character> set = new HashSet<>();
for (int i = 0; i < brokenLetters.length(); i++) {
set.add(brokenLetters.charAt(i));
}
int res = 0;
for (String s : strs) {
boolean found = false;
for (int i = 0; i < s.length(); i++) {
if (set.contains(s.charAt(i))) {
found = true;
break;
}
}
if (!found) {
res++;
}
}
return res;
}
}
时空复杂度 O ( l s + l t ) O(l_s+l_t) O(ls+lt)。