方法:先逆序,再找与原来序列的最大公共序列长度,递归实现
import sys
def maxLength(s1, s2):
length = len(s1)
dp = [[0 for i in range(length + 1)] for j in range(length + 1)]
for i in range(length):
for j in range(length):
if s2[i] == s1[j]:
dp[i + 1][j + 1] = dp[i][j] + 1
else:
dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1])
return dp[length][length]
if __name__ == '__main__':
for line in sys.stdin:
str1 = line.split()[0]
length = len(str1)
str2 = str1
str2 = str2[::-1]
print(length - maxLength(str1, str2))