题目:2559题.统计范围内的元音字符串数
解题思路
1.因为统计次数多,每次统计都遍历一遍耗费时间太长,因此使用前缀和数组来保存[0,t]中符合题意的字符串目。
2.[l,r]=[0,r]-[0,l) ,这里注意区间的开闭,转换成代码就是sum[r]-sum[l-1]
代码:
class Solution {
public:
bool isyuan(char c)
{
if(c=='a' || c=='e' ||c=='i' ||c=='o' ||c=='u')
return true;
return false;
}
vector<int> vowelStrings(vector<string>& words, vector<vector<int>>& queries) {
int n=words.size();
int sum[n+1];
string t=words[0];
int m=t.length();
if(isyuan(t[0])&&isyuan(t[m-1])) sum[0]=1;
else sum[0]=0;
for(int i=1;i<n;i++)
{
int now;
string t=words[i];
int m=t.length();
if(isyuan(t[0])&&isyuan(t[m-1]))
now=1;
else
now=0;
sum[i]=sum[i-1]+now;
}
vector<int> ans;
int times=queries.size();
for(int i=0;i<times;i++)
{
int l=queries[i][0];
int r=queries[i][1];
//[0,r]-[0,l)
if(l==0) ans.push_back(sum[r]);
else ans.push_back(sum[r]-sum[l-1]);
}
return ans;
}
};