当字符串中最多可删除一个元素时,考虑字符串是否仍然满足回文要求:双指针遍历,逐一匹配相应位置的字符;在不匹配的位置,令左指针右移一位或者右指针左移一位(删除一个字符),在分别考虑当下的情况是否满足回文要求。
class Solution {
public:
bool validPalindrome(string s) {
int left=0,right=s.size()-1;
int flag=1;
while(left<right)
{
if(s[left]==s[right])
{
left++;
right--;
}
else
{
return valid(s,left,right-1)||valid(s,left+1,right);
}
}
return 1;
}
bool valid(string s,int begin,int end)
{
while(begin<end)
{
if(s[begin]==s[end])
{
begin++;
end--;
}
else
return 0;
}
return 1;
}
};
本文介绍了一种算法,通过使用双指针遍历字符串并检查其是否满足回文条件,即使在允许删除一个字符的情况下也能判断字符串是否为有效回文。提供了详细的实现思路及C++代码示例。
376

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



