• 【leetcode刷题笔记】Valid Palindrome


    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

    For example,
    "A man, a plan, a canal: Panama" is a palindrome.
    "race a car" is not a palindrome.

    Note:
    Have you consider that the string might be empty? This is a good question to ask during an interview.

    For the purpose of this problem, we define empty string as valid palindrome.


    题解:Using two pointers head and tail, head keeps moving forward till it points to an alpha or number; tail moves backward till it points to an alpha or number, then judge if what head points to equals what tail points, if it doesn't equal, return false; Else cotinue moving head and tail to compare characters bewteen them.

    We also need a function isValid(char c) to judge if char c is a number or alpha.

    The code is below:

     1 public class Solution {
     2     private boolean isValid(char c){
     3         if(c >= 'a' && c <= 'z')
     4             return true;
     5         if(c >= '0' && c <='9')
     6             return true;
     7         
     8         return false;
     9     }
    10     
    11     public boolean isPalindrome(String s) {
    12         s = s.toLowerCase();
    13         
    14         if(s == null || s.length() <= 1)
    15             return true;
    16         
    17         int head = 0;
    18         int tail = s.length() - 1;
    19         
    20         while(head < tail){
    21             while(head < tail && !isValid(s.charAt(head)))
    22                 head++;
    23             while(tail > head && !isValid(s.charAt(tail)))
    24                 tail--;
    25             if(s.charAt(head) != s.charAt(tail))
    26                 return false;
    27             else {
    28                 head++;
    29                 tail--;
    30             }
    31             
    32         }
    33         
    34         return true;
    35     }
    36 }
  • 相关阅读:
    关于C++顺序容器一致初始化的问题
    44. 通配符匹配(Wildcard Matching)
    76. 最小覆盖子串(Minimum Window Substring)
    72. 编辑距离(Edit Distance)
    首入大观园
    删除链表的倒数第N个节点
    目标和
    克隆图
    最长回文子串
    旋转矩阵
  • 原文地址:https://www.cnblogs.com/sunshineatnoon/p/3854866.html
Copyright © 2020-2023  润新知