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); } }