leetcode-680. 驗證迴文字符串 Ⅱ刷題筆記(c++)

寫在前面

  • 難度:簡單,,,
  • 已棄療,學大牛思想

題目詳情

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

示例 1:

	輸入: "aba"
	輸出: True
示例 2:

	輸入: "abca"
	輸出: True
	解釋: 你可以刪除c字符。
注意:

字符串只包含從 a-z 的小寫字母。字符串的最大長度是50000。

ac代碼

  • 算法思想
    • 字符串可能包含0個或1個要刪除字符
      • 刪掉左邊的字符,剩下的是否爲迴文?
      • 刪掉右邊的字符,剩下的是否爲迴文?
class Solution
{
public:
    bool validPalindrome(string s)
    {
        int l = 0;
        int r = s.size() -1;
        while(l<r && s[l] == s[r])
        {
            l++;
            r--;
        }
        if(l>=r)
            return true;

        int l1 = l+1;
        int r1 = r;
        while(l1 < r1 && s[l1] == s[r1])
        {
            l1++;
            r1--;
        }
        if(l1 >= r1)
            return true;
        int l2 = l;
        int r2 = r-1;
        while(l2 < r2 && s[l2] == s[r2])
        {
            l2++;
            r2--;
        }
        if(l2 >= r2)
            return true;

        return false;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章