力扣习题记录
1.验证回文字符串2
思路:开始准备把每一个都删除了,看看是否是回文串,但是这样的时间复杂度很高,于是思考有没有别的办法。
后来采用,从两端到中间的方式,low与high记录当前字符串字符的位置,然后开始比较,如果当前的字符不一样,那么判断(low,high-1)与(low+1,high)这个位置之间的字符串是否为回文串,如果是的就返回TRUE。
2.采用的函数
(string反转函数)
#include 头文件
reverse函数反转string,用来反转容器里面的元素。
reverse (迭代器1,迭代器2) 前闭后开
(string取子串函数)
3.代码实现
class Solution {
public:
bool palindrome(string a,int low,int high)
{
string zichuang=a.substr(low, high-low+1) ;
string temp=zichuang;
reverse(temp.begin(),temp.end());
if(temp==zichuang) return true;
return false;
}
bool validPalindrome(string s) {
int length=s.size();
int low=0,high=length-1;
while(low<=high)
{
if(s[low]!=s[high])
{
return palindrome(s,low,high-1)|| palindrome(s,low+1,high);
break;
}
low++;
high--;
}
return true;
}
};