【LeetCode】680. 返信文字列の検証II

5186 ワード

タイトルリンク:https://leetcode-cn.com/problems/valid-palindrome-ii/description/
タイトルの説明
空でない文字列sを指定し、最大1文字を削除します.返信文字列にできるかどうかを判断します.

入力:aba出力:True
入力:abca出力:True解釈:c文字を削除できます.
注意:
  • 文字列には、a-zからの小文字のみが含まれます.文字列の最大長は50000です.

  • 解決策
    考え方:二重ポインタ思想.文字列が回文列(1)i,j移動中(i(2)i,j移動中(i
    class Solution {
    public:
        bool validPalindrome(string s) {        
            if (s.size()<=2) return true;
            
            int left=0,right=s.size()-1;
            while(left<right){
                if (s[left]!=s[right]){
                    if (isPalindrome(s,left+1,right) || isPalindrome(s,left,right-1))
                        return true;
                    else 
                        return false;
                }
                left++;right--;
            }        
            return true;
            
        }
        
    public: //        
        bool isPalindrome(string s,int left,int right) {
            while(left<right){
                if (s[left]!=s[right]) return false;
                left++;right--;
            }        
            return true;
        }
    };