leetcode-680. 验证回文字符串 Ⅱ

 

这题不用双指针也挺简

class Solution {
public:
    bool validPalindrome(string s) {
        int i = 0;
        int j = s.size()-1;
        int cnt = 0;
        while(i<j){
            if(s[i]!=s[j]){
                return isbool(s, i+1,j)||isbool(s, i,j-1);
            }
            i++;
            j--;
        }
        return true;
    }

    bool isbool(string s, int i, int j){
        while(i<j){
            // 为什么里面不再次递归呢,因为validPalindrome已经一次不等了,删了一个元素
            // 这里再次不等,肯定不是回文了,题目要求是最多删除一个元素。
            // 如果再次递归就意味着不只删除一个元素
            if(s[i]!=s[j])
                return false;
            i++;
            j--;
        }
        return true;
    }
};

 

posted @ 2021-08-10 17:00  三一一一317  阅读(22)  评论(0)    收藏  举报