LeetCode 125 验证回文串 简单

题目 - 点击直达

  • [1. 125 验证回文串 简单](#1. 125 验证回文串 简单)
    • [1. 题目详情](#1. 题目详情)
      • [1. 原题链接](#1. 原题链接)
      • [2. 题目要求](#2. 题目要求)
      • [3. 基础框架](#3. 基础框架)
    • [2. 解题思路](#2. 解题思路)
      • [1. 思路分析](#1. 思路分析)
      • [2. 时间复杂度](#2. 时间复杂度)
      • [3. 代码实现](#3. 代码实现)

1. 125 验证回文串 简单

1. 题目详情

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。

1. 原题链接

LeetCode 125 验证回文串 简单

2. 题目要求

示例 1:

输入: s = "A man, a plan, a canal: Panama"

输出:true

解释:"amanaplanacanalpanama" 是回文串。
示例 2:

输入:s = "race a car"

输出:false

解释:"raceacar" 不是回文串。
示例 3:

输入:s = " "

输出:true

解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。

由于空字符串正着反着读都一样,所以是回文串。
提示:

1 <= s.length <= 2 * 105

s 仅由可打印的 ASCII 字符组成

3. 基础框架

● Cpp代码框架

cpp 复制代码
class Solution {
public:
    bool isPalindrome(string s) {
    }
};

2. 解题思路

1. 思路分析

( 1 ) (1) (1) 快排思想,借助两个变量 l l l和 r r r
( 2 ) (2) (2) l l l从字符串起始0下标位置向后找到第一个字母字符;
( 3 ) (3) (3) r r r从字符串最后一个字符size-1下标位置开始向前找到第一个字母字符;
( 4 ) (4) (4) 对找到的两个字母字符分别进行判断,如果是大写字母则变为小写字母;
( 5 ) (5) (5) 比较这两个字母字符,相等就 l l l和 r r r就继续分别查找下一个字母字符,直到 l l l和 r r r相遇说明所有须比较的字母字符都符合要求,结束并返回true;只有存在一对不相等的字母字符说明不是回文串,直接返回false;

2. 时间复杂度

O ( N ) O(N) O(N)
l l l向后查找, r r r向前查找,直到二者相遇时才结束查找,共查找了 n n n次;

3. 代码实现

cpp 复制代码
class Solution {
public:
    bool isPalindrome(string s) {
        int l = 0, r = s.size() - 1;

        while(l < r){
            while(l < s.size() && !isalpha(s[l]) && !isdigit(s[l])){
                l++;
            }
            while(r >= 0 && !isalpha(s[r]) && !isdigit(s[r])){
                r--;
            }
            if(l < r){
                if(isupper(s[l])) s[l] += 32;
                if(isupper(s[r])) s[r] += 32;
                if(s[l] != s[r]) return  false;
                l++;
                r--;
            }
        }
        return true;
    }
};

T h e The The e n d end end

相关推荐
老黄编程3 小时前
点云SIFT3D特征点云原理、算法描述及参数详细说明
算法·3d·sift3d
ulias2123 小时前
初步了解STL和string
开发语言·c++·mfc
老黄编程3 小时前
3DHarris特征提取算法描述及参数详细说明
数学·算法·几何·3dharris特征提取
fruge3 小时前
技术面试复盘:高频算法题的前端实现思路(防抖、节流、深拷贝等)
前端·算法·面试
希望有朝一日能如愿以偿3 小时前
力扣每日一题:使数组和能被p整除
数据结构·算法·leetcode
Christo34 小时前
AAAI-2013《Spectral Rotation versus K-Means in Spectral Clustering》
人工智能·算法·机器学习·数据挖掘·kmeans
葵花楹4 小时前
【补题】【atcoderabc434】【codeforces1067】
算法
waves浪游4 小时前
进程控制(上)
linux·运维·服务器·开发语言·c++
roman_日积跬步-终至千里4 小时前
【模式识别与机器学习】AdaBoost算法:集成学习的基本原理与AdaBoost算法的应用
算法·机器学习·集成学习
mit6.8244 小时前
中位数贪心|前缀和_距离和ret=l+r_1
算法