下面是python版 执行用时40ms 哭
class Solution:
def longestPalindrome(self, s: str) -> str:
huiwen_zong = []
if len(s)==0:
return "字符串为空"
elif len(s) == 1:
return s
elif len(s) == 2:
if s[0] == s[1]:
return s
else:
return s[0]
for i in range(1,len(s)-1): # 对每一个字符进行循环
huiwen = [s[i]]
huiwen1 = [s[i]] # 判断第二个
index1 = i-1
index2 = i+1
for j in range(len(s[i:])): # 以这个字符为起点进行查找
if s[index1] == s[index2]:
huiwen.insert(0, s[index1])
huiwen.append(s[index2])
--index1
++index2
if --index1<0:
break
else:
break
if s[i] == s[i+1]:
index3 = i-1
index4 = i+2
huiwen1.append(s[i+1])
for j in range(len(s[i:])):
if s[index3] == s[index4]:
huiwen1.insert(0, s[index3])
huiwen1.append(s[index4])
--index3
++index4
if index3<0:
break
else:
break
if len(huiwen)>=len(huiwen1):
huiwen_zong = huiwen
else:
huiwen_zong = huiwen1
string_huiwen = ''
for i in huiwen_zong:
string_huiwen = string_huiwen+i
return string_huiwen
C++ 版 用时为0
class Solution {
public:
string longestPalindrome(string s) {
int len=s.length();
string result="";
int left=-1; //声明左右游标
int right=-1;
if(len==0)
return result;
for(int i=0;i<len;i++){
//这里存在字符串判断条件太苛刻了,并不只有这两种情况
//形如“sssss”子串应该是“sssss"应该走else
//但是满足if条件
if(s[i]==s[i+1]){ //对称点是偶数点
left=i;
right=i+1;
}else{ //对称点是奇数点
left=i;
right=i;
}
while(left>0&&right<len-1&&s[left-1]==s[right+1]){
left--;
right++;
}
if(right-left+1>result.length()){
result=s.substr(left,right-left+1);//返回子串
}
}
return result;
}
};