目录
- 标签(题目类型):字符串
题目描述
给定一个字符串,判断它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
思路及实现
方式一:双指针
思路
从字符串的两端向中间遍历,跳过非字母和数字的字符,比较对应的字符是否相等。
代码实现
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

本文详细介绍了如何使用双指针和辅助栈两种方法在Java、C语言、Python3和Golang中实现LeetCode125验证回文串的问题,对比了两种方法的时间复杂度和空间复杂度。
最低0.47元/天 解锁文章
1246

被折叠的 条评论
为什么被折叠?



