1. 程式人生 > 其它 >劍指 Offer II 019. 最多刪除一個字元得到迴文

劍指 Offer II 019. 最多刪除一個字元得到迴文

給定一個非空字串 s,請判斷如果 最多 從字串中刪除一個字元能否得到一個迴文字串。

 

示例 1:

輸入: s = "aba"
輸出: true

示例 2:

輸入: s = "abca"
輸出: true
解釋: 可以刪除 "c" 字元 或者 "b" 字元

示例 3:

輸入: s = "abc"
輸出: false

 

提示:

    1 <= s.length <= 105
    s 由小寫英文字母組成


解析:

  雙指標,一個從前向後,一個從後向前,如果有不同,判斷刪除第一次出現的不同的字元就可以(注意這裡要判斷兩次,不同的兩個字元分別刪)

  因為之後的不同必須保證 第一次出現不同的地方相同

  

class
Solution { public: bool validPalindrome(string s) { int l = 0, r = s.length() - 1; int flag = 0; while(l < r) { if(s[l] != s[r] && flag == 0) { flag = 1; r--; } else if(s[l] != s[r]) {
break; } else l++, r--; } if(flag == 0 || l >= r) return true; flag = 0; l = 0, r = s.length() - 1; while(l < r) { if(s[l] != s[r] && flag == 0) { flag = 1; l
++; } else if(s[l] != s[r]) { break; } else l++, r--; } if(flag == 0 || l >= r) return true; return false; } };