LeetCode-125. 验证回文串

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/love905661433/article/details/84930836

题目

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

**说明:**本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

输入: "race a car"
输出: false

解题

  • 典型的双指针问题, 代码如下:
class Solution {
    public boolean isPalindrome(String s) {
      if (null == s || "".equals(s)) {
        return true;
      }
      char[] chars = s.toLowerCase().toCharArray();
      int left = 0, right = chars.length - 1;
      // left == right的情况, 表示除了最中间的一个字符之外, 其他的满足回文串情况
      while(left<right){
        if (!isNumOrChar(chars[left])) {
          left++;
          continue;
        }
        if (!isNumOrChar(chars[right])) {
          right--;
          continue;
        }
        
         if (chars[left] == chars[right]) {
           left++;
           right--;
        } else {
          return false;
        }
      }
      
      return true;
    }
    
    // 判断字符串是否为数字和字母
    private boolean isNumOrChar(char c){
      if(c >= '0' && c <= '9'){
        return true;
      }
      
      if(c >= 'a' && c <= 'z'){
        return true;
      }
      return false;
    }
}

猜你喜欢

转载自blog.csdn.net/love905661433/article/details/84930836