Saturday, September 23, 2017

[LeetCode]Valid Palindrome II


只删除一个字符看是否可以变为回文。首先我们如何判断一个string是回文呢,当然是双指针头尾扫。如果当前首尾指针指向的字符相同,那么目前我们扫过的区域是符合要求的;当我们碰到首尾指针指向不同字符的情况时,很明显,代表我们需要删掉这两字符的其中一个了。删掉哪个我们并不确定,所以我们两种情况都考虑。假设两个指针分别为i, j,并且s[i] != s[j],那么我们就需要分别check s[i + 1, j],s[i, j - 1]是否分别为回文,如果这两个至少有一个是回文,也就是表明删掉一个字符可以使原字符变为回文。常数空间,时间复杂度O(n),最多扫两遍字符串,代码如下:


No comments:

Post a Comment