首页 > 试题广场 >

回文

[编程题]回文
  • 热度指数:5047 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
京京和东东是好朋友。东东很喜欢回文。回文是指从前往后读和从后往前读是一样的词语。京京准备给东东一个惊喜,先取定一个字符串s,然后在后面附上 0 个或者更多个字母形成回文,京京希望这个回文越短越好。请帮助京京计算他能够得到的最短的回文长度。

数据范围:输入的字符串长度满足 ,且保证只含有小写英文字母

输入描述:
输入包括一个字符串s,字符串s长度length


输出描述:
输出一个整数,表示牛牛能够得到的最短的回文长度。
示例1

输入

abab

输出

5

说明

在末尾添加一个 'a' 构成回文 
示例2

输入

a

输出

1

说明

本身就是回文 
def isPalindrome(s):
    l = 0
    r = len(s) - 1
    while(r>l):
        if(s[l] != s[r]):
            return False
        l += 1
        r -= 1
    return True

s = input()
length = len(s)
for i in range(length):
    temp = s[:i]
    temp = temp[::-1]
    if(isPalindrome(s + temp)):
        print(i + length)
        break

发表于 2019-03-27 11:12:50 回复(0)
#菜鸟出品
s=input()
l=len(s) for i in range(l):
    ss=s+s[:i][::-1]  if ss==ss[::-1]:  print(len(ss))   break

编辑于 2019-03-07 20:23:56 回复(0)

python解法

题目中说字符串最大长度小于50,所以可以暴力求解。

直接把长度一个一个往上加,看哪个长度满足条件。

string = input()
for i in range(0, len(string)):
    if string + string[:i][::-1] == (string + string[:i][::-1])[::-1]:
        print(len(string) + i)
        break
编辑于 2019-03-03 23:26:56 回复(0)