680. 验证回文字符串 Ⅱ

680. 验证回文字符串 Ⅱ

//回文,最多只能删除一个
//解题思路:双指针,如果遇到不相等的,删除后再判断剩余字符串是否是回文
//需要注意的是删除有两种方式,删除left或者删除right,因此单独写一个判断字符串是否是回文的子函数比较方便
class Solution {
public:
    bool validPalindrome(string s) {
        int left = 0;
        int right = s.size()-1;
        while(left < right)
        {
            if(s[left] != s[right])
            {
                if(palindrome(s,left+1,right) || palindrome(s,left,right-1)) return true;
                else return false;
            }
            left++;
            right--;
        }
        return true;

    }
private:
    //私有函数专用与判断字符串是否为回文字符串
    bool palindrome(string s, int l, int r)
    {
        while(l < r)
        {
            if(s[l] != s[r]) return false;
            l++;
            r--;
        }
        return true;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值