2947. 统计美丽子字符串 I
思路:先预处理出字符串前半段的元音字母数量。然后第一层循环枚举美丽字符串的右端点,第二层枚举左端点。时间复杂度0(n^2)。
class Solution {
public:
int beautifulSubstrings(string s, int k) {
int n=s.size();
vector<int> v(n+1,0);
for(int i=0;i<s.size();i++){
v[i+1]=v[i];
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
v[i+1]++;
}
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
int x=v[i+1]-v[j];
int y=i-j+1-x;
if(x==y&&(x*y)%k==0) ans++;
}
}
return ans;
}
};