LeetCode 2559. Count Vowel Strings in Ranges

44 阅读1分钟

🔗 leetcode.com/problems/co…

题目

  • 给一个字符串组成的数组 words
  • 给一批 query, 统计 l-r 之间,有几个首尾都是元音的字符串

思路

  • prefix_sum
  • 按顺序遍历 words,判断当前是否为首尾元音字符串,更新 prefix_sum 数组
  • 对于每个 query,就是 prefix_sum r+1 - prefix_sum l

代码

class Solution {
public:
     vector<int> vowelStrings(vector<string>& words, vector<vector<int>>& queries) {
        int sum = 0;
        unordered_set<char> s = {'a', 'e', 'i', 'o', 'u'};
        vector<int> presum;
        presum.push_back(0);
        for (int i = 0; i < words.size(); i++) {
            string st = words[i];
            if (s.count(st[0]) && s.count(st[st.size() -1])) {
                presum.push_back(presum[i] + 1);
            } else {
                presum.push_back(presum[i]);
            }
        }

        vector<int> ans;
        for (int i = 0; i < queries.size(); i++) {
            int l = queries[i][0];
            int r = queries[i][1];
            ans.push_back(presum[r + 1] - presum[l]);
        }
        return ans;
        
    }
};