#力扣:125. 验证回文串@FDDLC

125. 验证回文串

一、Java

java 复制代码
class Solution {
    public boolean isPalindrome(String s) {
        for (int l = 0, r = s.length() - 1; l < r; l++, r--) {
            while (l < r && !Character.isLetterOrDigit(s.charAt(l))) l++;
            while (l < r && !Character.isLetterOrDigit(s.charAt(r))) r--;
            if (l < r && Character.toLowerCase(s.charAt(l)) != Character.toLowerCase(s.charAt(r))) return false;
        }
        return true;
    }
}

二、C++

cpp 复制代码
#include <string>

using namespace std;

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

三、Python

python 复制代码
class Solution:
    def isPalindrome(self, s: str):
        l, r = 0, len(s) - 1
        while l < r:
            while l < r and not s[l].isalnum():
                l += 1
            while l < r and not s[r].isalnum():
                r -= 1
            if l < r and s[l].lower() != s[r].lower():
                return False
            l, r = l + 1, r - 1
        return True

四、JavaScript

javascript 复制代码
var isPalindrome = function(s) {
    for (let l = 0, r = s.length - 1; l < r; l++, r--) {
        while (l < r && !/[a-zA-Z0-9]/.test(s[l])) l++;
        while (l < r && !/[a-zA-Z0-9]/.test(s[r])) r--;
        if (l < r && s[l].toLowerCase() !== s[r].toLowerCase()) return false;
    }
    return true;
};

五、Go

Go 复制代码
package main

import "unicode"

func isPalindrome(s string) bool {
	for l, r := 0, len(s)-1; l < r; l, r = l+1, r-1 {
		for l < r && !unicode.IsDigit(rune(s[l])) && !unicode.IsLetter(rune(s[l])) {
			l++
		}
		for l < r && !unicode.IsDigit(rune(s[r])) && !unicode.IsLetter(rune(s[r])) {
			r--
		}
		if l < r && unicode.ToLower(rune(s[l])) != unicode.ToLower(rune(s[r])) {
			return false
		}
	}
	return true
}
相关推荐
智者知已应修善业2 分钟前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
Halo_tjn4 分钟前
Java Set集合相关知识点
java·开发语言·算法
生成论实验室1 小时前
《事件关系阴阳博弈动力学:识势应势之道》第四篇:降U动力学——认知确定度的自驱演化
人工智能·科技·神经网络·算法·架构
AI科技星1 小时前
全域数学·72分册:场计算机卷【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
科研前沿2 小时前
镜像孪生VS视频孪生核心技术产品核心优势
大数据·人工智能·算法·重构·空间计算
水蓝烟雨2 小时前
1931. 用三种不同颜色为网格涂色
算法·leetcode
晨曦夜月2 小时前
map与unordered_map区别
算法·哈希算法
Morwit2 小时前
QML组件之间的通信方案(暴露子组件)
c++·qt·职场和发展
图码3 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
handler013 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法