# 题目描述

统计范围内的元音字符串数

给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries

每个查询 queries[i] = [li, ri] 会要求我们统计在 words 中下标在 liri 范围内(包含 这两个值)并且以元音开头和结尾的字符串的数目。

返回一个整数数组,其中数组的第 i 个元素对应第 i 个查询的答案。

注意:元音字母是'a'、'e'、'i'、'o' 和 'u'

提示:

  • 1 <= words.length <= 105
  • 1 <= words[i].length <= 40
  • words[i] 仅由小写英文字母组成
  • sum(words[i].length) <= 3 * 105
  • 1 <= queries.length <= 105
  • 0 <= queries[j][0] <= queries[j][1] < words.length

# 测试用例

用例1:

  • 输入:words = ["aba","bcb","ece","aa","e"], queries = [[0,2],[1,4],[1,1]]
  • 输出:[2,3,0]
  • 解释:以元音开头和结尾的字符串是 "aba"、"ece"、"aa" 和 "e" 。 查询 [0,2] 结果为2(字符串 "aba" 和 "ece")。 查询 [1,4] 结果为3(字符串 "ece"、"aa"、"e")。 查询 [1,1] 结果为0。 返回结果 [2,3,0]

用例2:

  • 输入:words = ["a","e","i"], queries = [[0,2],[0,1],[2,2]]
  • 输出:[3,2,1]
  • 解释:每个字符串都满足这一条件,所以返回 [3,2,1] 。

# 思路

参考代码中的注释

# 代码实现


/**
 * @param {string[]} words
 * @param {number[][]} queries
 * @return {number[]}
 */

// 输入
var __readline = require("readline-sync");
__readline.setDefaultOptions({prompt: ""});
var readline = __readline.prompt;

console.log("请输入words数组: ");

let words = readline().split(",");
console.log("请输入queries数组: ");
let queries = readline().split(" ").map(Number);

var vowelStrings = function(words, queries) {
  // [1, 0, 1, 1, 1]
  // [0, 1, 2, 3, 4]
  
  // 先求words每个word是不是符合条件的
  // 如果是,w数组对应位置就设置为1,如果不是就设置为0

  let w = new Array(words.length).fill(0);

  for(let i = 0; i < words.length; i ++){
      const word = words[i];
      if(check(word)){
          w[i] = 1;
      }
      else{
          w[i] = 0;
      }
  }

  let res = [];
  for(let i = 0; i < queries.length; i ++){
      const query = queries[i];

      // cnt统计query的符合条件的值
      let cnt = 0;

      // 遍历query[0]到query[1]
      // 判断w是否为1
      for(let j = query[0]; j <= query[1]; j ++){
          if(w[j] == 1){
              cnt ++;
          }
      }
      // 遍历完一个query后把cnt放到res数组中
      res.push(cnt);
  }

  return res;
  
};

var check = (word) => {
  let end = word.length - 1;

  let yuanyin = ['a', 'e', 'i', 'o', 'u'];
  if(yuanyin.indexOf(word[end]) != -1 && yuanyin.indexOf(word[0]) != -1){
      // 符合条件
      return true;
  }
  // 不符合条件
  return false;
}

const res = vowelStrings(words, queries);
console.log("结果为: ", res);


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75