在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
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短