【LeetCode】Valid Palindrome

来源:互联网 发布:做淘宝如何和快递公司 编辑:程序博客网 时间:2024/06/06 01:15
Valid Palindrome 
Total Accepted: 4526 Total Submissions: 21149 My Submissions
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.
判断某个字符串是不是回文串。
比较简单吧。
难点在于,字符串会有空格,以及标点符号之类的,这些可以统统忽略。
注意可以在一开始,将所有的空格都替换掉。将字母都转为小写。
用两个指针(C/C++习惯上的描述)来标记头和尾。
如果是字母或者是数字,就比较这两个字符是否相等,如果相等,比较下一个。
如果不是字母或者数字,头指针或者尾指针递加或者递减。
一直判断到头尾指针相等为止。
Java AC
public class Solution {    public boolean isPalindrome(String s) {        if(s == null || "".equals(s.trim())){            return true;        }        s = s.trim().replaceAll("[' ']+","").toLowerCase();        int len = s.length();        int i = 0;        int j = len-1;        while(i <= j && i < len && j >= 0 ){            char start = s.charAt(i);            char end = s.charAt(j);            if (!(start >= 'a' && start <= 'z') && !(start >= '0' && start <= '9')) {i++;continue;}            if (!(end >= 'a' && end <= 'z') && !(end >= '0' && end <= '9')) {            j--;            continue;            }            if(start != end){                return false;            }            i++;            j--;        }        return true;    }}
0 0
原创粉丝点击