华为OD机试题:密码截取
生活随笔
收集整理的這篇文章主要介紹了
华为OD机试题:密码截取
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
描述
Catcher是MCA國的情報員,他工作時發(fā)現(xiàn)敵國會用一些對稱的密碼進(jìn)行通信,比如像這些ABBA,ABA,A,123321,但是他們有時會在開始或結(jié)束時加入一些無關(guān)的字符以防止別國破解。比如進(jìn)行下列變化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因為截獲的串太長了,而且存在多種可能的情況(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量實在是太大了,他只能向電腦高手求助,你能幫Catcher找出最長的有效密碼串嗎?
數(shù)據(jù)范圍:字符串長度滿足 1≤n≤2500
輸入描述:
輸入一個字符串(字符串的長度不超過2500)
輸出描述:
返回有效密碼串的最大長度
示例1
輸入:
ABBA輸出:4
示例2
輸入:
ABBBA輸出:5
示例3
輸入:
12HHHHA輸出:4
#解題想法:判斷該字符是否在之前出現(xiàn)過,然后依次判斷,它出現(xiàn)位置是否對稱,得出長度while True:try:s = input()l = [1] * len(s)for i in range(1, len(s)):if s[i] in s[0:i]:m=s[0:i].count(s[i])j = s.index(s[i])ll=[1]for _ in range(0,m):st = s.index(s[i],j)ss = s[st:i + 1]if ss == ss[::-1]:ll.append(i + 1 - st)j=st+1l[i] = max(l[i - 1], max(ll))else:l[i] = max(l[i - 1], 1)print(max(l))except:exit()總結(jié)
以上是生活随笔為你收集整理的华为OD机试题:密码截取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js报错- cannot set pro
- 下一篇: The server returned