
详细思路
双指针,向中间,都一步如果不是那些再补上一步,判断
精确定义
left需要
right需要
class Solution { public: bool isPalindrome(string s) { int n=s.size(); int left=0,right=n-1; while(left<right){ while(left<n&&!isok(s[left]))left++; while(right>=0&&!isok(s[right]))right--; if(left>=right)return true; if(s[left]!=s[right]&&toupper(s[left])!=toupper(s[right]))return false; left++,right--; } return true; } bool isok(char c){ if(c>='a'&&c<='z'||c>='A'&&c<='Z'||c>='0'&&c<='9')return true; else return false; } }; 踩过的坑 if(s[left]!=s[right]&&toupper(s[left])!=toupper(s[right]))return false; 如果不相等,且大写也不相等,就是错的,否则,先Aa是虽然不
浙公网安备 33010602011771号