几个C++库函数:
ispunct() 判断字符是否为为标点符号或特殊字符isspace() 判断字符是否为空格tolower() 将大写字符转化成对应小写字符,并返回示例:
输入:"A man, a plan, a canal: Panama" 输出: true我的答案代码:
bool isPalindrome(string s){ if(s.size() == 0) return true; int i = 0,j = s.size()-1; while(i<j){ if(ispunct(s[i])||isspace(s[i])){ ++i; continue; } if(ispunct(s[j])||isspace(s[j])){ --j; continue; } if(tolower(s[i])==tolower(s[j])){ ++i; --j; } else return false; } return i>=j?true:false; }答后总结要点:
多积累多利用C++库函数回文类(双指针)问题 循环结束条件一般要注意前后指针位置下标大小比较