题目:回文字符串是指一个字符串从左到右与从右到左遍历得到的序列是相同的。
分析:采用字符旋转的方法。
code:
def reverse(listStrs):
begin = 0
end = len(listStrs) - 1
while begin < end:
temp = listStrs[begin]
listStrs[begin] = listStrs[end]
listStrs[end] = temp
begin += 1
end -= 1
return ''.join(listStrs)
if __name__ == "__main__":
strs = 'abcba'
listStrs = list(strs)
strs1 = reverse(listStrs)
if strs == strs1:
print(strs + "为回文字串")
else:
print(strs + "不为回文字串")
code:
def longestPalindrome(s):
# 如果字符串为空或者长度为1,则直接返原字符串
if len(s) == 1 or s is None:
return s
# 记录最长回文子串得长度
maxlen = 0
# 记录最长回文子串得内容
result = ''
# 从头开始遍历字符串s
for i in range(len(s)):
for j in range(maxlen, len(s) - i ):
#从当前记录的最大回文子串的长度往后开始遍历查看,因为如果长度小于maxlen的话,
# 即使是回文子串,也不是最长的,不可能作为结果输出
for j in range(maxlen,len(s) - i):
# 字符串切片操作
str_ = s[i: i + j + 1]
_rts = str_[::-1]
# 判断是否是回文子串且最长
if str_ == _rts and len(str_) > maxlen:
maxlen = len(str_)
result = str_
return result
if __name__ == "__main__":
s = "babad"
print(longestPalindrome(s))
网友评论