gpt4 book ai didi

python - 如何在给定特定规则集的情况下分割字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:29 25 4
gpt4 key购买 nike

我正在尝试解决一个名为“断项链”的 USACO 问题。在这个问题中,给你一根绳子,你已经找到了最大可能的连续色珠。

我试图将我的字符串分成几个子集,每个部分都有自己的颜色。 “w”字符可以是红色或蓝色,但必须与红色或蓝色字符分开。它不能单独存在。

例如:

arr = []
string = 'rwbwrr'
#do something
arr = ["rw","bw","rr"]

我尝试在 for 循环中创建 while 循环,但这不起作用。

new_necklace = "bbrwrbrbrrbrbrwrwwrbwrwrrbwww"
arr = []
count = 0
for i in range(len(new_necklace)):
count = i
if new_necklace[i] == 'r' or new_necklace[i] == 'b':
while new_necklace[count+1] == 'w':
count += 1
arr.append(new_necklace[i:count])

当我尝试此方法时,出现索引超出范围错误,并且它弄乱了输出。该数组应等于 ["bb","rwr","b","r"....]

编辑:我对我的代码做了一些修改,最终得到了这个。

arr = []
for i in range(len(new_necklace)):
count = i+1
if new_necklace[i] == 'w':
continue
if new_necklace[i] == 'r' or new_necklace[i] == 'b':
while count < len(new_necklace):
if new_necklace[count] == 'w' or new_necklace[count] == new_necklace[i]:
count += 1
else:
break
arr.append(new_necklace[i:count])

但是,这会导致一个新问题,因为数组输出 ['bb', 'b', 'rwr', 'r', 'b', 'r', 'b', 'rr', 'r', 'b', 'r', 'b', 'rwrwwr', 'rwwr', 'r', 'bw', 'rwrr', 'rr', 'r', 'bwww'] 即使 new_necklace 是 “bbrwrbrbrrbrbrwrwwrbwrwrrbwww”。它似乎将相同的子集附加两次。

最佳答案

使用re模块按照规则分割字符串:

s = 'bbrwrbrbrrbrbrwrwwrbwrwrrbwww'

import re

print([i[0] for i in re.findall(r'(([rb])(?:\2|w)*)', s)])

打印:

['bb', 'rwr', 'b', 'r', 'b', 'rr', 'b', 'r', 'b', 'rwrwwr', 'bw', 'rwrr', 'bwww']

关于python - 如何在给定特定规则集的情况下分割字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57257347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com