力扣(LeetCode)验证回文串 个人题解
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
这题是验证回文串的一个变种,因为里面有干扰的字符串存在,不能直接判断,不过也很好解决,直接添加过滤的语句,遇到不是数字且不是字母的直接跳过,只有两边都是合法的,才进行比较。
特别注意题意,要求忽略字母的大小写。
代码如下:
class Solution { public boolean isPalindrome(String s) { int left = 0, right = s.length() - 1; char ch1, ch2; while (left < right) { if (Character.isLetter(s.charAt(left)) || Character.isDigit(s.charAt(left))) { ch1 = s.charAt(left); } else { left++; continue; } if (Character.isLetter(s.charAt(right)) || Character.isDigit(s.charAt(right))) { ch2 = s.charAt(right); } else { right--; continue; } if (Character.toLowerCase(ch1) == Character.toLowerCase(ch2)) { left++; right--; } else return false; } return true; } }