该程序查找要添加的最少字符数,以使其在Python中成为回文

假设我们有一个字符串s,我们必须找到要在s之后插入的最小字符数,以使其成为回文。

因此,如果输入类似于s =“ mad”,则输出将为2,因为我们可以添加“ am”使其成为“ madam”。

为了解决这个问题,我们将遵循以下步骤-

  • b:= 256,m:= 10 ^ 9 + 7

  • s:=一个列表,通过取s中每个i的(i的ASCII)− 97之差

  • r:= s的最后一个元素,l:= s的最后一个元素

  • n:= s的大小

  • res:= n − 1

  • p:= b

  • 对于范围n − 2至0的i,减1,

    • RES:=我

    • r:= r + s [i] * p,r:= r mod m

    • l:= l * b,l:= l + s [i]

    • l:= l mod m

    • p:= p * b,p:= p mod m

    • 如果l与r相同,则

    • 返回资源

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, s):
          b = 256
          m = 10 ** 9 + 7
          s = list(ord(i) − 97 for i in s)
          r = l = s[−1]
          n = len(s)
          res = n − 1
          p = b
          for i in range(n − 2, −1, −1):
             r += s[i] * p
             r %= m
             l *= b
             l += s[i]
             l %= m
             p *= b
             p %= m
             if l == r:
                res = i
          return res
    ob = Solution()
    s = "mad"
    print(ob.solve(s))

    输入值

    "mad"
    输出结果
    2

    猜你喜欢