字符串:有效的回文

解题思路

首先,回文是我们可以从头到尾和从尾到头读一个字符串,得到的内容都相等。
故我们可以使用双指针,指针相对而行来扫描字符串的字符,判断字符是否相等,如果两指针相遇且没有遇到不相等的数,那么这个字符串是回文。

需要注意的地方: 题目只考虑字母和数字,我们在移动双指针时,需要跳过非字母和数字的字符。

代码

class Solution {
    public boolean isPalindrome(String s) {
        boolean isPalindrome = true;
        int start = 0;
        int end = s.length() - 1;
        while(start < end) {
             char ch1 = s.charAt(start);
             char ch2 = s.charAt(end);
             if(!Character.isLetterOrDigit(ch1)) {
                 start++;
             } else if (!Character.isLetterOrDigit(ch2)) {
                 end--;
             } else {
                 ch1 = Character.toLowerCase(ch1);
                 ch2 = Character.toLowerCase(ch2);
                 if(ch1 != ch2) {
                     return false;
                 }
                start++;
                end--;
             }
           

        }
        return isPalindrome;
    }
}

总结

求有效的回文。在回文的特性后,我们可以用双指针的解题思路,判断字符串是否是回文。即以相对的方向,移动双指针,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值