|
发表于 2019-8-29 23:53:01
|
显示全部楼层
写得有点长。。。看看答案
- def answer(strs):
- # 首先判断str结尾是不是重复字符
- if strs[-1] == strs[-2]:
- temp = strs
- while True:
- if temp[-1] == temp[-2]:
- # 切片剔除末尾
- temp = temp[:-1]
- else:
- break
- temp = temp[:-1][::-1]
- forward = strs + temp
- #求结尾非重复正向回文
- else:
- temp = strs
- i = -2
- while not temp == temp[::-1]:
- temp += strs[i]
- i -= 1
- forward = temp
- #求逆向回文:从后切片判断,如果包含回文子字符串,在头部加上切掉的子字符串倒序
- temp2 = strs
- while True:
- if temp2 != temp2[::-1]:
- temp2 = temp2[:-1]
- else:
- break
- backward = strs[:].split(temp2)[-1][::-1] + strs
- # 比较正序、逆序回文长度后返回
- if len(backward) < len(forward):
- return backward
- else:
- return forward
- answer('leveled')
- test.assert_equals(answer('ab'), 'aba');
- test.assert_equals(answer('abb'), 'abba');
- test.assert_equals(answer('abc'), 'abcba');
- test.assert_equals(answer('rad'), 'radar');
- test.assert_equals(answer('race'), 'racecar')
- test.assert_equals(answer('leveled'), 'deleveled')
复制代码 |
|