アルゴリズム学習の道:返信文字列の検証II

850 ワード

空白以外の文字列sが与えられ、最大1文字が削除されます.返信文字列にできるかどうかを判断します.
例:
  : "abca"
  : True
  :      c  。

 
この問題は主に二重ポインタを用いて,先頭から等しいか否かを判断し,等しくない文字に遭遇した場合は左または右から1文字を除去し,残りの文字列が回文であるか否かを再判断することである.
public static boolean validPalindrome(String s) {
        int i = 0,j = s.length()-1;
        while(i < j){
            if(s.charAt(i) == s.charAt(j)){
                i++;
                j--;
            }else{
                //     ,       ,              ;      ,      
                if(del == 0){
                    del++;
                    return validPalindrome(s.substring(i,j)) || validPalindrome(s.substring(i+1,j+1));
                }
                return false;
            }
        }
        return true;
}