LeetCode:125.验证回文串

解题思路:

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

先遍历一遍,将有效部分存放在数组前面部分:定义i = 0;j = 0配合使用;
如果在0-9的数字的ASCII码之间或在小写字母的ASCII码之间,直接赋值;
如果在大写字母的ASCII码之间,转为相应的小写再赋值;

再使用双指针判断:
left指针从前往后,right指针从j往前,只要有一个不相等就返回false;
如果循环退出还没结束,则前后位置都对应相等,满足题意,返回true

源代码:

class Solution {
public:
    bool isPalindrome(string s) {
        int n = s.size();
        int left = 0, right = n - 1;
        while (left < right) {
            while (left < right && !isalnum(s[left])) {
                ++left;
            }
            while (left < right && !isalnum(s[right])) {
                --right;
            }
            if (left < right) {
                if (tolower(s[left]) != tolower(s[right])) {
                    return false;
                }
                ++left;
                --right;
            }
        }
        return true;
    }
};

运行结果:

LeetCode:125.验证回文串_第1张图片

 

你可能感兴趣的:(#,力扣,leetcode,算法,职场和发展)