任务: 输入是一个由字符A、B、C组成的字符串.
找出连续的"A*A"或"C*C"子字符串的最大数目.
其中*符号代表任何可能的字符.
考虑到重叠.
输入:https://kompege.ru/files/sJDwcyfWx.txt
yields :21
语言:巨 Python
不带RegEX的解决方案(正确):
with open("./data/24_4546.txt") as f:
s = f.readline().replace('\n', '')
c = m = 0
for j in range(3):
for i in range(j, len(s) - 2, 3):
if s[i] + s[i + 2] == "AA" or s[i] + s[i + 2] == "CC":
c += 1
else:
m = max(m, c)
c = 0
m = max(m, c)
print(m)
我try 使用正则表达式(不起作用):
import re
with open("./data/24_4546.txt") as f:
s = f.readline().replace('\n', '')
print(len(max(re.sub(r"[^*]", " ", re.sub(r"(?=A[A-C]A)|(?=C[A-C]C)", "*", s)).split(), key=len)))