在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