算法题---验证回文串(双指针)

mac2024-07-13  49

题目:给定一个字符串,验证它是否为回文串,只考虑字母和数字字符,不区分字母的大小写。
说明:空字符定义为有效回文串;其他无效字符(例如空格,标点符号等)可忽略

几个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++库函数回文类(双指针)问题 循环结束条件一般要注意前后指针位置下标大小比较
最新回复(0)