Description: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.
思路:首尾字符比较,如果字符相同则比较下一位,如果不相同,则跳过这一位比较后面的数字是否是回文字符串,如果是则该字符串是回文字符串,如果不是,则该字符串不是回文字符串。
class Solution {
public:
bool isPalindrome(string s, int index)
{
int i = 0, j = s.length() - 1;
while(i < j)
{
if(i == index)
{
i++;
continue;
}
if(j == index)
{
j--;
continue;
}
if(s[i++] != s[j--])
return false;
}
return true;
}
bool validPalindrome(string s) {
int start = 0, end = s.length() - 1;
while(start < end)
{
if(s[start] != s[end])
{
if(isPalindrome(s, start) || isPalindrome(s, end))
return true;
else
return false;
}
start++;
end--;
}
return true;
}
};