LeetCode每日一題5月19日 LeetCode680,驗證迴文字符串

問題描述:

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

題目鏈接:https://leetcode-cn.com/problems/valid-palindrome-ii/

示例 1:

輸入: "aba"
輸出: True

示例 2:

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

解題思路:

因爲只是刪除一個字符,按照迴文字符的判斷方法,多餘字符可能會出現在前半部分,也有可能是後半部分,設置flag爲0,遇到不相同的置1

判斷s[i]==s[s.size()-1-i-flag]  和判斷是s[i+flag]==s[s.size()-1-i]

代碼如下:

class Solution {
public:
    bool validPalindrome(string s) {
        int flag = 0;
        bool res1 = true;
        bool res2 = true;
        for(int i=0;i<s.size()/2;i++){
           if(s[i]!=s[s.size()-1-i-flag] && flag==0){
               flag=1;
           }
           if(s[i]!=s[s.size()-1-i-flag]){
               res1 = false;
               break;
           }
        }
        flag = 0;
        for(int i=0;i<s.size()/2;i++){
           if(s[i+flag]!=s[s.size()-1-i] && flag==0){
               flag=1;
           }
           if(s[i+flag]!=s[s.size()-1-i]){
               res2 = false;
               break;
           }
        }
        return res1||res2;

    }
};

  

 

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