假设我们有一个字符串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