Re: [閒聊] 每日leetcode

作者: JIWP (JIWP)   2024-09-15 20:04:27
1371. Find the Longest Substring Containing Vowels in Even Counts
就給一個字串s
請回傳最長的子字串的長度
該子字串內所有母音出現的次數都是偶數
母音有a、e、i、o、u
思路:
假設num=0
當你遇到母音
a : num ^= 1
e : num ^= 2
i : num ^= 4
o : num ^= 8
u : num ^= 16
並且記錄每個num值第一次出現的位置
這樣就可以知道那些子字串裡母音出現的次數是偶數了
c code :
#define max(x,y) (x>y? x:y)
int findTheLongestSubstring(char* s) {
int *rec=(int*)(calloc(32,sizeof(int))),n=strlen(s),res=0;
char xor =0 ;
rec[0]=-1;
for (int i=1;i<32;i++){
rec[i]=-2;
}
for (int i=0;i<n;i++){
switch (s[i]){
case 97 :
xor ^= 1 ;
break;
case 101 :
xor ^= 2 ;
break;
case 105 :
xor ^= 4 ;
break;
case 111 :
xor ^= 8 ;
break;
case 117 :
xor ^= 16 ;
break;
}
if (rec[(int)(xor)]==-2){
rec[(int)(xor)]=i;
}
else
{
res=max(res,(i-rec[(int)(xor)]));
}
}
return res;
}

Links booklink

Contact Us: admin [ a t ] ucptt.com