在Python中删除相似结尾后查找字符串最小长度的程序

假设我们有一个只有三个字符“a”、“b”和“c”的字符串 s。我们将对字符串应用以下算法任意次数 -

  • 从 s 中选择一个非空前缀,其中前缀中的所有字符都相同。

  • 从 s 中选择一个非空后缀,其中后缀中的所有字符都相同。

  • 前缀和后缀是不相交的。

  • 前缀和后缀的字符必须相同。

  • 从 s 中删除前缀和后缀。

最后,我们必须在执行上述操作任意次(可能是零次)后找到 s 的最小长度。

所以,如果输入像s = "aabccabba",那么输出将是3,因为我们首先可以选择prefix = "aa"和suffix = "a",这样去掉后的字符串就是"bccabb",然后选择前缀=“b”和后缀“bb”,所以去除后的字符串为“cca”,长度为3。

示例

让我们看看以下实现以获得更好的理解 -

from collections import deque
def solve(s):
   s = deque(s)
   while len(s) > 1 and s[0] == s[-1]:
      chk = s[0]
      while s and s[0] == chk:
         s.popleft()
      while s and s[-1] == chk:
         s.pop()
   return len(s)

s = "aabccabba"
print(solve(s))

输入

"aabccabba"
输出结果
3

猜你喜欢