题目描述
给定一个字符串,问是否能通过添加一个字母将其变为回文串。
输入描述:
一行一个由小写字母构成的字符串,字符串长度小于等于10。
输出描述:
输出答案(YES\NO).
输入例子:
coco
输出例子:
YES
题目来源:蘑菇街
简单DP,回文字符串
#!/usr/bin/python
#coding: utf-8
import sys
for line in sys.stdin:
# 去除左右两边的空格
line = line.strip()
n = len(line)
dp = [[0 for j in range(n + 1)] for i in range(n + 1)]
line2 = line[::-1]
for i in range(n):
for j in range(n):
if line[i] == line2[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])
# 最后一位中存储的是最长回文字符串的长度
if n - dp[n][n] == 1:
print "YES"
else:
print "NO"