LeetCode面試題☞驗證迴文串

驗證迴文串

題目描述

  • 題目

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

  • 示例

  • 示例 1:

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

    輸入: "abca"
    輸出: True
    解釋: 你可以刪除c字符。
    
  • 說明

字符串只包含從 a-z 的小寫字母

解題思路

  • 該題的解決方式可分爲兩種

若:迴文串中有效(特指☞需要判斷是否爲會問結構的那段字符串)字符串兩端的字符相等,接着判斷內部字符串是否爲迴文串
在這裏插入圖片描述
若:字符串兩端的字符不是迴文串的話,就將left往後移動一位進行比較或者將right往前移動一位後判斷內部是否爲迴文串

  • 將left往後移動一位

在這裏插入圖片描述

  • 將right 往前移動一位
    在這裏插入圖片描述

代碼實現

  • 迴文判斷函數
bool Palindrome(string& s,int left,int right){
        while(left<right){
            if(s[left]!= s[right]){
                return false;
            }
            left++;
            right--;
        }
        return true;
  }
  • 整體實現
class Solution {
public:

    bool Palindrome(string& s,int left,int right){
        while(left<right){
            if(s[left]!= s[right]){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    bool validPalindrome(string s) {
        int left=0;
        int right=s.size()-1;

        while(left<right){
            if(s[left]!=s[right]){
                return Palindrome(s,left+1,right) || Palindrome(s,left,right-1);
            }
            left++;
            right--;
        }
        return true;
    }
};
  • 運行結果

在這裏插入圖片描述

原題🔗

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