给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明: 本题中,我们将空字符串定义为有效的回文串。
示例1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例2:
输入: "race a car"
输出: false
这个题首先的想法是先把所有字符转换成小写,然后取出所有字母数字,然后反向对比,但是这样一般的思路来说要进行三次循环,事实上完全可以走一次循环完成。左右两边开始遍历,如果左边或者右边不是字母数字,那就更新索引,如果都是字母或数字,则进行对比(这里要进行大小写转换的操作),不相等就返回false,相等则继续对比,直到两个索引相等。
C++源代码:
class Solution {
public:
bool isPalindrome(string s) {
int left = 0;
int right = s.size()