解题思路
通过这道题,主要了解到了c++的位运算。包括了~ ,^.
一开始没有理解~运算,其实是位取反。
~-1 = 0
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Solution { public: int findTheLongestSubstring(string s) { int ans=0; int status=0; vector<int> pos(1<<5, -1); pos[0] = 0; for(int i=0;i <s.size();i++){ if(s[i]=='a'){ status ^= 1<<0; }else if(s[i]=='e'){ status ^= 1<<1; }else if(s[i]=='i'){ status ^= 1<<2; }else if(s[i]=='o'){ status ^= 1<<3; }else if(s[i]=='u'){ status ^= 1<<4; } if(~pos[status]){ ans = max(ans, i+1-pos[status]); }else{ pos[status] = i+1; } } return ans; } };
|