描述
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.
The string will only contain lowercase characters a-z. The maximum length of the string is 50000.
您在真实的面试中是否遇到过这个题? 是
样例
Given s = "aba" return true
Given s = "abca" return true // delete c
我采取的办法是从两边向中间逐个对比,给与一次再向中间靠近的机会。
class Solution {
public:
/**
* @param s: a string
* @return: nothing
*/
bool validPalindrome(string &s) {
// Write your code here
int begin=0;
int end=s.length()-1;
int k=1;
while(begin<end){
if(s[begin]!=s[end]){
if(s[begin+k]==s[end]) begin++;
else if(s[begin]==s[end-k]) end--;
else return false;
k--;
}
begin++;
end--;
}
return true;
}
};
本文介绍了一种算法,用于判断一个非空字符串在删除一个字符后是否能形成回文。通过从两端逐步向中间比较字符的方法,该算法允许一次错误机会来达到目标。适用于长度不超过50,000的字符串,仅包含小写字母。

5365

被折叠的 条评论
为什么被折叠?



