驗證迴文字串 Ⅱ——leetcode680
阿新 • • 發佈:2022-01-28
驗證迴文字串 Ⅱ
題目:驗證迴文字串 Ⅱ
給定一個非空字串s
,最多刪除一個字元。判斷是否能成為迴文字串。
示例 :
輸入: s = "abca"
輸出: true
解釋: 你可以刪除c字元。
題解
方法一:貪心
class Solution { public boolean validPalindrome(String s) { int l = s.length(); char cs[] = s.toCharArray(); boolean flag = true; boolean res = true; for (int i = 0, j = l - 1; i <= j; i++, j--) { if (cs[i] != cs[j]) { if (flag) { j++; flag = false; } else { res=false; break; } } } if(!res) { res=true; flag=true; for (int i = 0, j = l - 1; i <= j; i++, j--) { if (cs[i] != cs[j]) { if (flag) { i--; flag = false; } else { res=false; break; } } } } return res; } }
方法二:貪心+遞迴
class Solution2 { public boolean validPalindrome(String s) { int l = s.length(); char cs[] = s.toCharArray(); int i=0,j=l-1; while (i<=j) { if(cs[i]!=cs[j]) { break; } i++; j--; } if(i>=j) return true; return isPalindrome(cs, i+1, j) || isPalindrome(cs, i, j-1); } public boolean isPalindrome(char[] cs, int i, int j) { while (i<j) { if(cs[i]!=cs[j]) return false; i++; j--; } return true; } }