Leetcode笔记目录
一、题目描述
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
示例1:
- 输入: “aba”
输出: True
示例2:
- 输入: “abca”
输出: True
解释: 你可以删除c字符。
二、解题过程
1.思想
双指针的变形题,但不是一直循环到i与j相遇,而是符合条件后直接进行处理。
2.代码
bool issym(string s,int l,int r){
while(l<r){
if(s[l]!=s[r])return false;
l++;r--;
}
return true;
}
bool validPalindrome(string s) {
int i=0,j=s.size()-1;
while(i<=j){
if(s[i]!=s[j]){
return issym(s,i+1,j)||issym(s,i,j-1); //错误1
}
i++;j--;
}
return true;
}
- 错误
- 并不是循环到i与j碰面,而是一旦发现S[i]!=S[j],则立即判断剩下的字符串是否为回文。
三、总结
虽然简单但仍然一开始思想不太对