首页 > 试题广场 >

添加回文串

[编程题]添加回文串
  • 热度指数:7570 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

对于一个字符串,我们想通过添加字符的方式使得新的字符串整体变成回文串,但是只能在原串的结尾添加字符,请返回在结尾添加的最短字符串。

给定原字符串A及它的长度n,请返回添加的字符串。保证原串不是回文串。

测试样例:
"ab",2
返回:"a"
#把字符串拆成两部分
#例如abcdd:从a,bcdd查找右边的是否为回文串,如果不是则再向右移动切割
#         然后ab,cdd查找
#       再然后abc,dd查找到dd为回文串,逆序返回此时左边的字符串(cba)。
#所以最大一定先找到被返回

class Palindrome:
    def addToPalindrome(self, A, n):
        if n == 2:
            return A[0]
        for i in range(1,n):    #从开头一个一个查找剩余的字符串是否为回文串
            temp = A[i:]
            if temp == temp[::-1]:
                return A[i-1::-1]

编辑于 2018-09-23 11:17:35 回复(0)
class Palindrome: def addToPalindrome(self, A, n): # write code here B=A[::-1] su=n for i in range(n): if A[i:n]==B[:n-i]: su=min(su,i) return B[n-su:n]
发表于 2018-07-17 12:48:32 回复(0)

python solution:

    def addToPalindrome(self, A, n):
        for i in range(1,n+1):
            if A+A[:i][::-1]==(A+A[:i][::-1])[::-1]:
                return A[:i][::-1]
发表于 2017-11-07 19:25:45 回复(1)