給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?
輸出需要刪除的字元個數。
輸入描述:
輸入資料有多組,每組包含乙個字串s,且保證:1<=s.length<=1000.
輸出描述:
對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。
輸入例子1:
abcda
輸出例子1:22
參考:
動態規劃
#python版
#思路:最長會文字序列:== str與reverse_str的最長公共字序列
#注意:碰到了樓上python解法同樣的問題,沒把迴圈過程放到name中,一直說是過90%
#然後超時,放進去就好了。猜一下:是不是給了程式入口能加快解析 # -*- coding:utf-8 -*-
import
sysdef
maxlcp(strs):
if strs==none or len(strs)==0:
return
0 lens =len(strs)
dp =[0] *lens
dp[0] = 1 if strs[0] == strs[lens-1] else
0
for i in
range(lens):
pre =dp[0]
dp[0] = max(dp[0],1 if strs[i] == strs[lens-1] else
0)
for j in range(1,lens):
cur =dp[j]
dp[j] = max(dp[j],dp[j-1])
if strs[i] == strs[lens-1-j]:
dp[j] = max(dp[j],pre+1)
pre =cur
return dp[lens-1] if
__name__ == '
__main__':
while
true:
line =sys.stdin.readline().strip()
lens =len(line)
ifnot
line:
break
maxlcp =maxlcp(line)
#print lens
#print maxlcp
print(lens - maxlcp)
您的**已儲存
答案正確:恭喜!您提交的程式通過了所有的測試用例
騰訊2017暑期實習生程式設計題
刷題 pragma warning disable 4996 遮蔽警告 構造回文 題目描述 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。思路 其實就是,原字串翻轉之後的字串跟原字串的最長公共子串行 那麼利用動態規劃的最長公共...
騰訊2017暑期實習生程式設計題
構造回文串 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。示例1 輸入 a...
騰訊2017暑期實習生程式設計題
程式設計題 構造回文 時間限制 1秒 空間限制 32768k 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個...