int right = n - 1; for (int i = 0; i < n / 2; i++) { if (s.charAt(i) == s.charAt(right)) { right -= 1; continue; } else { // 删除left // 或者删除right return isHui(s.substring(i + 1, right + 1)) || isHui(s.substring(i, right)); } }
最后,当s的长度n是1,2时,必定是回文
1 2 3 4
int n = s.length(); if (n == 1 || n == 2) { returntrue; }
classSolution{ publicbooleanvalidPalindrome(String s){ int n = s.length(); if (n == 1 || n == 2) { returntrue; }
if (isHui(s)) { returntrue; }
int right = n - 1; for (int i = 0; i < n / 2; i++) { if (s.charAt(i) == s.charAt(right)) { right -= 1; continue; } else { // 删除left // 或者删除right return isHui(s.substring(i + 1, right + 1)) || isHui(s.substring(i, right)); } } returntrue; }
privatebooleanisHui(String s){ StringBuilder sb = new StringBuilder(s); if (sb.toString().equals(sb.reverse().toString())) { returntrue; } returnfalse; } }
privatebooleanisHui(String s){ int n = s.length(); for (int i = 0; i < n / 2; i++) { if (s.charAt(i) != s.charAt(n - i - 1)) { returnfalse; } } returntrue; }