【经典算法】LeetCode 125. 验证回文串(Java/C/Python3实现含注释说明,Easy)

本文详细介绍了如何使用双指针和辅助栈两种方法在Java、C语言、Python3和Golang中实现LeetCode125验证回文串的问题,对比了两种方法的时间复杂度和空间复杂度。
  • 作者主页: 🔗进朱者赤的博客

  • 精选专栏:🔗经典算法

  • 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名

  • ❤️觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论,💬支持博主,记得点个大大的关注,持续更新🤞
    ————————————————-
    首先,请注意您提供的题目链接是 LeetCode 14,但题目描述和代码实现应该对应于 LeetCode 125(验证回文串)。以下是按照您要求的格式编写的技术博客。

  • 标签(题目类型):字符串

题目描述

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

原题:LeetCode 125. 验证回文串

思路及实现

方式一:双指针

思路

从字符串的两端向中间遍历,跳过非字母和数字的字符,比较对应的字符是否相等。

代码实现

Java版本
public boolean isPalindrome(String s) {
   
   
    int left = 0, right = s.length() - 1;
    while (left < right) {
   
   
        // 跳过非字母和数字的字符
        while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {
   
   
            left++;
        }
        while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
   
   
            right--;
        }
        // 转换为小写并比较
        if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) {
   
   
            return false;
        }
        left++;
        right--;
    }
    return true;
}

说明:使用双指针从字符串两端向中间遍历,跳过非字母和数字的字符,比较对应字符(转换为小写后)是否相等。

C语言版本
#include <ctype.h>
#include <stdbool.h>
#include <string.h>

bool isPalindrome(char *s) {
   
   
    int left = 0, right = strlen(s) - 1;
    while (left < right) {
   
   
        // 跳过非字母和数字的字符
        while (left < right && !isalnum(s[left])) {
   
   
            left++;
        }
        while (left < right && !isalnum(s
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进朱者赤

多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值