Problem: 2586. 统计范围内的元音字符串数
思路
题目面板较为容易,直接暴力模拟是可行的。
另外可以用哈希集合存放元音字母,拿遍历的首尾字母去哈希集合中找是否有重复的,同样可以判断。
解题方法
- 遍历每个单词。预存哈希集合或者预先写好判断是否为元音字母的函数
- 截取其首尾字母,从哈希集合中找或者用函数判断其是否为元音字母
- 符合首尾都为元音字母,结果++
- 返回结果
复杂度
-
时间复杂度:
O ( n ) O(n) O(n) 取决于left - right
的值 -
空间复杂度:
O ( 1 ) O(1) O(1) 元音字母表长度固定
Code
1 模拟
class Solution {
public int vowelStrings(String[] words, int left, int right) {
int res = 0;
for(int i = left;i <= right; ++i){
String word = words[i];
int n = word.length();
char firstCh = word.charAt(0);
char lastCh = word.charAt(n -1);
if(isVowel(firstCh)&&isVowel(lastCh)){
res++;
}
}
return res;
}
boolean isVowel(char ch){
return "aeiou".contains(String.valueOf(ch));
}
}
2 哈希集合
class Solution {
public int vowelStrings(String[] words, int left, int right) {
Set<Character> vowels = new HashSet<Character>(){
{
add('a');
add('e');
add('i');
add('o');
add('u');
}
};
int res = 0;
for(int i = left;i <= right; ++i){
String word = words[i];
int n = word.length();
if(vowels.contains(word.charAt(0)) &&vowels.contains(word.charAt(n - 1))){
res++;
}
}
return res;
}
}