题目描述
Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化
ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
输入描述:
输入一个字符串
输出描述:
返回有效密码串的最大长度
示例1
输入
ABBA
输出
4
题解:
思路:本题的思路应该挺多的,本King的思路是,从第一个元素开始依次往后,判断每个子字符串是否是对称的,若是对称的,就把该子字符串的长度存进数组中,然后找出数组中最大的值,即是最长的有效密码
# coding=utf-8
def isDuiChen(s):
l = 0
r = len(s)-1
while l <= r:
if s[l] == s[r]:
l += 1
r -= 1
continue
else:
return False
return True
if __name__ == '__main__':
s = input()
l = 0
r = len(s)-1
res = []
while l <= r:
#p元素用作标记目前判断的子字符串的起始位置
p = l
while s[l] != s[r] and l < r:
r -= 1
else:
ss = s[l:r+1]
if isDuiChen(ss):
res.append(r - l + 1)
l = p + 1
r = len(s)-1
res.sort(reverse=True)
print(res[0])
说明:
目前本King的代码能力只能按上述方式实现,后续有更好的方案,欢迎各位指点,也会不定期做修改~
本文介绍了一种算法,用于从给定的字符串中找出最长的有效对称密码子串。通过对每个子字符串进行对称性检查,算法能够识别并返回最长的有效密码串的长度。
778

被折叠的 条评论
为什么被折叠?



