LeetCode0125-是否为回文串

这道题在美团算法中碰到,考察重点为:特殊字符、大小写等异常场景的覆盖(测试思维、白盒代码覆盖),算是一道测开面试的经典题目,算法题目为easy,测开角度考察点:五颗星。

自己看到题目后,只是觉得很简单,但是其实只做了基本的正常场景的逻辑覆盖,没有考虑到异常值的覆盖场景。

\\TODO: s==null是否有必要? 如果对外提供接口时,判空必要,但是直接在代码块调用方法时,入参为null会被代码检查器自动拦截。

package codepackage;

public class Num125_ispalindrome {
    public static Boolean isPalindrome(String s) {
        // 自己的答案-》没有考虑到大小写,特殊字符
        if (s == null) return false;

        // 这里自己写的条件是 i<=j,对于" "这样的输入会报错,其实小于就可以,因为最中间那个数,不需要对比
        for(int i=0,j=s.length()-1;i<j;){

            while(i<j&&!Character.isLetterOrDigit(s.charAt(i))){
                i ++;
            }
            while(i<j&&!Character.isLetterOrDigit(s.charAt(j))){
                j --;
            }
            if(Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))) return false;
            i++;
            j--;

        }
        return true;

    }


    public static void main(String[] args) {
        String  s="A man, a plan, a canal: Panama";
        Boolean result =isPalindrome(s);
        System.out.println(result);
    }
}

 

posted on 2021-06-29 22:42  cStream  阅读(34)  评论(0)    收藏  举报