Valid Palindrome II
程序员文章站
2024-03-06 22:04:38
...
Given a non-empty string s
, you may delete at most one character. Judge whether you can make it a palindrome.
Example 1:
Input: "aba" Output: True
Example 2:
Input: "abca" Output: True Explanation: You could delete the character 'c'.
Note:
- The string will only contain lowercase characters a-z. The maximum length of the string is 50000.
这道题是验证回文字符,字符串中只含有小写字母,而且允许删除一个字符,那么当遇到不匹配的时候,这里是选择左边和右边都尝试一次删除,只要有一种能返回true,那么结果就返回true。
class Solution {
public:
bool validPalindrome(string s) {
int left = 0, right = s.size() - 1;
while (left < right) {
if (s[left] == s[right]) {
++left; --right;
} else {
int l = left, r = right - 1;
while (l < r) {
if (s[l] != s[r]) break;
++l; --r;
if (l >= r) return true;
}
++left;
while (left < right) {
if (s[left] != s[right]) return false;
++left; --right;
}
}
}
return true;
}
};