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