Leetcode125|验证回文串,怎么区分这两种循环跳出非正常跳出是依然满足循环条件却不循环了,正常跳出是不在满足进入循环的条件了

125. 验证回文串icon-default.png?t=M85Bhttps://leetcode.cn/problems/valid-palindrome/

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

 题解:

我们首先要预处理,把大小写统一,剔除字母外的干扰字符

然后把预处理完成后的字符串开始两指针押着向中间走,只要一个循环下来没有于是对不上的情况不满足条件自然会跳出返回false

别忘了还有一种非正常跳出循环的方式,就是遇到接不头的,我们怎么区分这两种循环跳出呢

非正常跳出是依然满足循环条件却不循环了,正常跳出是不在满足进入循环的条件了

class Solution {
    public boolean isPalindrome(String s) {
        s=s.toLowerCase();//统一大小写
        String s2="";//剔除非字母字符后存在这
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            if((c>='a'&&c<='z')||(c>='0'&&c<='9')){
                s2+=c;
            }
        }
        if(s2=="")return true;//空字符串是回文串
       int h=-1;
       int t=s2.length();//两个指针都在界外
       while(h<t){
           h++;
           t--;//入界,开始往中间走
           if(s2.charAt(h)!=s2.charAt(t)){
               break;//只要有一个不相等就停止循环returnfalse,这是非正常跳出的循环
            }
       } 
       if(t<=h)return true;//正常跳出循环的会有一个特征就是两个指针相撞了也就是不满足进入循环条件了
       return false;
       
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值