力扣打卡 2586-统计范围内的元音字符串数

Problem: 2586. 统计范围内的元音字符串数

思路

题目面板较为容易,直接暴力模拟是可行的。
另外可以用哈希集合存放元音字母,拿遍历的首尾字母去哈希集合中找是否有重复的,同样可以判断。

解题方法

  1. 遍历每个单词。预存哈希集合或者预先写好判断是否为元音字母的函数
  2. 截取其首尾字母,从哈希集合中找或者用函数判断其是否为元音字母
  3. 符合首尾都为元音字母,结果++
  4. 返回结果

复杂度

  • 时间复杂度:
    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;
}
}

你可能感兴趣的:(leetcode,算法)