# 「力扣」第 125 题:验证回文串(简单)
# 题目描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明: 本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
提示:
- 字符串
s
由 ASCII 字符组成
参考代码:
Java 代码:
public class Solution {
public boolean isPalindrome(String s) {
int len = s.length();
// 如果字符只有 1 个字母,那么也一定是回文数
if (len < 2) {
return true;
}
// 只考虑字母和数字字符,可以忽略字母的大小写。
s = s.toLowerCase();
// 只保留小写字母和数字
s = s.replaceAll("[^0-9a-z]", "");
char[] charArray = s.toCharArray();
int left = 0;
int right = charArray.length - 1;
while (left < right) {
char leftChar = charArray[left];
char rightChar = charArray[right];
if (leftChar != rightChar) {
return false;
}
left++;
right--;
}
return true;
}
}
Python 代码:
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
left = 0
right = len(s) - 1
while left < right:
if not s[left].isalnum():
left += 1
continue
if not s[right].isalnum():
right -= 1
continue
if s[left].lower() != s[right].lower():
return False
left += 1
right -= 1
return True
作者:liweiwei1419 链接:https://suanfa8.com/two-pointers/solutions-1/0125-valid-palindrome 来源:算法吧 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。