Valid Palindrome II(C++验证回文字符串 Ⅱ)

解题思路:

(1)夹逼定理

(2)两处修改位置,只有一次机会,分别前后

class Solution {
public:
    bool validPalindrome(string s) {
        int i=0,j=s.size()-1,tag_i=0,tag_j=0;
		while(i<=j) {
			if (s[i]==s[j]) { //一次比较下一个 
				i++;
				j--;
			} else { //开始修改,共有两处修改位置,前后 
				tag_i = i;
				tag_j = j; 
				i++;
				while (i<=j) {
					if (s[i]==s[j]) {
						i++;
						j--;
					} else { //回退,修改另一个位置 
						i = tag_i;
						j = tag_j-1; 
						while(i<=j) {
							if (s[i]==s[j]) {
								i++;
								j--;
							} else return false;
						}
						return true;
					}
				}
				return true; 
			}
		}
		return true; 
    }
};
发布了302 篇原创文章 · 获赞 277 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/coolsunxu/article/details/105535378