2023年7月26日 星期三

[1456] Maximum Number of Vowels in a Substring of Given Length

寫錯了XD 還以為要找母音連續的 " 小於k 的最大值" (還真繞口)
看來要重寫 Orz
先貼一下錯的版本  XD
那還有貼的必要嗎 XD
bool isVowel(char input)
{
if ((input=='a') || (input=='e') || (input=='i') || (input=='o') || (input=='u'))
return true;
else
return false;

}

int maxVowels(char * s, int k){
int i=-1,j=0, max=0;
int len = strlen(s);
while (j<len)
{
if(isVowel(s[j]))
{
if (i<0)
i=j;
if (j-i+1 > max)
max= j-i+1;
}
else
{
i=-1;
}
j++;
}
if (max>=k)
return k;
else
return max;
}

後來就弄了一個array 存母音出現的index  ,但後來的後來發現其實也不需要?!
一邊跑一邊算就是了。如下  XD

bool isVowel(char input)
{
if ((input=='a') || (input=='e') || (input=='i') || (input=='o') || (input=='u'))
return true;
else
return false;

}
#if 1
int maxVowels(char * s, int k){
int i=-1,j=0, max=0;
int len = strlen(s);
int count=0;
for (int z=0;z<k;z++)
count+=isVowel(s[z]);

max=count;
for (int z=k;z<len;z++)
{
count = (count+isVowel(s[z])-isVowel(s[z-k]));
if (count > max)
max=count;
}
return (max>=k)? k: max;
}
#else
int maxVowels(char * s, int k){
int i=-1,j=0, max=0;
int len = strlen(s);
bool *isVarray=calloc(len,sizeof(bool));

for (int z=0;z<len;z++)
{
if (isVowel(s[z]))
isVarray[z]=true;
else
isVarray[z]=false;
}
int count=0;
for (int z=0;z<k;z++)
{
count+=isVarray[z];
}
max=count;
for (int z=k;z<len;z++)
{
count = (count+isVarray[z]-isVarray[z-k]);
if (count > max)
max=count;
}
return (max>=k)? k: max;
}
#endif

沒有留言:

張貼留言