1. 程式人生 > 其它 >lc 680 驗證迴文串II

lc 680 驗證迴文串II

技術標籤:雙指標

給定一個非空字串 s,最多刪除一個字元。判斷是否能成為迴文字串。

示例 1:

輸入: “aba”
輸出: True
示例 2:

輸入: “abca”
輸出: True
解釋: 你可以刪除c字元。
注意:

字串只包含從 a-z 的小寫字母。字串的最大長度是50000。
題解 :
注意這裡是分別刪除一個字元 之後 再次判斷剩下的兩個是否能夠成迴文!

class Solution {
    public boolean validPalindrome(String s) {

        int low = 0;
        int high = s.length() - 1
; while(low < high){ char c1 = s.charAt(low); char c2 = s.charAt(high); if(c1 == c2){ low++; high--; }else{ //預設刪除後的兩個都是迴文 boolean flag1 = true; boolean flag2 = true
; //這裡分別刪除頭尾兩個字元 判斷是否夠成迴文 這裡需要複製給一個新的指標 ij for(int i = low + 1,j = high;i < j;i++,j--){ if(s.charAt(i) != s.charAt(j)){ flag1 = false; break; } } for
(int i = low,j = high - 1;i < j;i++,j--){ //如果再次有不同的字元 就需要刪除一個字元後 還不是迴文了 if(s.charAt(i) != s.charAt(j)){ flag2 = false; break; } } return flag1 || flag2; } } return true; } }