设置双指针 i 、 j i、j i、j, i ~i i 从 0 0 0 到 s . s i z e ( ) 2 − 1 \dfrac {s.size()}2-1 2s.size()−1 , j j j 从 s . s i z e ( ) 2 \dfrac {s.size()}2 2s.size() 到 s . s i z e ( ) s.size() s.size()。当 i i i 指向元音, c n t + + cnt++ cnt++,当 j j j 指向元音 c n t − − cnt-- cnt−−。由于 s . s i z e ( ) s.size() s.size() 是偶数,双指针的遍历同时结束。遍历结束,如果 c n t = 0 cnt=0 cnt=0 两半相似,否则不相似。
class Solution {
public:
bool halvesAreAlike(string s) {
int len = s.size()/2;//子串长度
int cnt = 0;
string h = "aeiouAEIOU" ;
for(int i =0,j=len;i<len;i++,j++){
if(h.find(s[i])!=string::npos) cnt++;
if(h.find(s[j])!=string::npos) cnt--;
}
if(cnt) return false;
return true;
}
};
理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。