C++零基础算法100题-验证回文串

45 阅读1分钟

题目链接: 125. 验证回文串 - 力扣(LeetCode)

题目描述

image.png

实现步骤

  1. 传入进来了一个字符串
  2. 遍历字符串的每一个字符,我们将字符变成小写字母
  3. 定义左右指针,用来扫描这个字符串
  4. 如果说左右指针中任意一个部署字母或者数字,我们就跳过它
  5. 如果左右指针所在的位置值不相等的化,那么我们就返回false
  6. 字符串遍历完成之后没有返回,就返回true

代码实现

class Solution {
public:
    bool isPalindrome(string s) {
        for(int i=0;i<s.size();i++){
            if(s[i]>='A'&&s[i]<='Z'){
                s[i]=s[i]-'A'+'a';
            }
        }
        int n=s.size();
        int l=0,r=n-1;
        while(l<r){
            if(!(s[l]>='a'&&s[l]<='z'||s[l]>='0'&&s[l]<='9')){
                l++;
                continue;
            }
            if(!(s[r]>='a'&&s[r]<='z'||s[r]>='0'&&s[r]<='9')){
                r--;
                continue;
            }
            if(s[l]!=s[r]){
                return false;
            }
            l++;
            r--;
        }
        return true;
    }
};