LeetCode-Valid Palindrome

public class Solution {
    public boolean isPalindrome(String s) {
        if ( s == null || s.length() == 0)
            return true;
        s = s.replaceAll("[^a-zA-Z0-9 ]", "").toLowerCase();
        s = s.replaceAll(" ", "");
        if ( s.length() == 1 || s.length() == 0)
            return true;
        int headP = 0;
        int tailP = s.length()-1;
        while (headP < tailP){
            if ( s.charAt(headP) != s.charAt(tailP) )
                return false;
            tailP --;
            headP ++;
        }
        return true;
        
    }
}

判断是否是回文,回文就是从两头读是一样的(是这样吗???!!)

所以要两个index 一个从head 一个从tail,每个char比较一下,对称位置只要不一样就返回false。

这个题用到了许多java string的函数 非常好用

str.replaceAll("[^a-zA-Z ]", "") 将第一个argu用第二个代替,其中[^a-zA-Z]是正则表达式,表示所有不是letter的字符,还可以加上0-9,这样就去掉了所有标点,只留下letter和数字。但是并没有去掉空格,所以空格还要再去一遍。
str.toLowerCase()
public class Solution { public boolean isPalindrome(String s) { if ( s == null || s.length() == 0) return true; s = s.replaceAll("[^a-zA-Z0-9 ]", "").toLowerCase(); s = s.replaceAll(" ", ""); if ( s.length() == 1 || s.length() == 0) return true; int headP = 0; int tailP = s.length()-1; while (headP < tailP){ if ( s.charAt(headP) != s.charAt(tailP) ) return false; tailP --; headP ++; } return true; }}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值