任务:输入是由字符A、B、C组成的字符串。
找出连续的“AA”或“CC”子串的最大数量。
其中 * 号代表任何可能的字符。
考虑重叠。
输入:https://kompege.ru/files/sJDwcyfWx.txt
输出: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)
我尝试使用regex(不工作):
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)))
1条答案
按热度按时间gr8qqesn1#
(?=...)
中使用捕获组:图纸: