【LeetCode】Valid Palindrome

133 篇文章 0 订阅
121 篇文章 2 订阅
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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值