1550. 存在连续三个奇数的数组【简单题】
思路:
- 定义int类型cnt用来统计奇数的个数。
- 增强for循环遍历数组arr,遍历到的元素为n,如果n为奇数则cnt++,否则重新开始计数;如果cnt==3,说明此时已经有了连续三个奇数,那么此时直接返回true。
- 如果成功把arr遍历完,那么说明数组没有连续3个奇数,于是返回false。
代码:
class Solution {
public boolean threeConsecutiveOdds(int[] arr) {
int cnt = 0;
for (int n : arr){
if (n % 2 != 0){
cnt++;
}else {
cnt = 0;
}
if (cnt == 3){
return true;
}
}
return false;
}
}
用时:
1935. 可以输入的最大单词数【简单题】
思路:
- 定义int类型变量ans用来存储可以输入的单词数,初值为0。
- 增强for循环遍历将text以空格分割得到的数组,遍历到的当前元素为str,表示每个单词;定义哈希set存储输入当前单词需要用到的字母;定义布尔标志位flag表示当前单词str是否可以被输入;遍历键盘坏掉的每个字母,如果该字母在set中存在,则表示输入当前单词需要用到该已损坏的字母键于是flag置为false,并退出循环。
- 损坏键盘字母遍历结束之后,如果flag为true,说明当前单词可以被输入,于是ans++。
- 所有的单词遍历检查完之后,返回ans即为可以输入的最大单词数。
代码:
class Solution {
public int canBeTypedWords(String text, String brokenLetters) {
int ans = 0;
for (String str : text.split(" ")){
Set<Character> set = new HashSet<>();
for (char ch : str.toCharArray()){
set.add(ch);
}
boolean flag = true;
for (char ch : brokenLetters.toCharArray()){
if (set.contains(ch)){
flag = false;
break;
}
}
if (flag){
ans++;
}
}
return ans;
}
}
用时:
这题官方题解没有java版本,但是我的只有6ms,击败22.87%。
每日一题困难题,不写了。
今天去学校!卷起来卷起来。