作为前言,这个问题以前被问过。然而,有人用不同的语言或不同的方法询问它,我宁愿理解我的代码的问题,而不是复制粘贴公认的解决方案
因此,就上下文而言,问题是这样的:
给定一串类似rwbbwrbwbrwbrb
的珠子,找出一种颜色(字母)的连续珠子的最大长度,然后是另一种颜色(字母)的珠子,注意白色可以被视为红色或白色
例如,wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
应该返回11,因为您可以在wwwbbrwrbrbrrbrbrwrwwrb
之后断开项链,使其具有wrwrrbwwwbb
(请记住,项链在其自身上循环,而不像列表),其颜色最终为rrrrrbbbbbb
我的代码(我剥离了所有I/O部分以简化它)的测试用例rwrwrwrwrwrwrwrwrwrwrwrwbwrwbwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwr
长度77
:
necklace = "rwrwrwrwrwrwrwrwrwrwrwrwbwrwbwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwr"
length = 77
necklace *= 2
maxes = []
for index, bead in enumerate(necklace[0: length]):
firstStreak = 1
i = 1
while i < length and (necklace[index + i] == bead or necklace[index + i] == "w"):
i += 1
firstStreak += 1
secondStreak = 0
while i < length and necklace[index + i] != bead:
i += 1
secondStreak += 1
maxes.append(firstStreak + secondStreak)
print(max(maxes))
这将输出73,正确答案是74
这段代码在前面的两个测试用例(wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
和rrr
)上都有效
我也非常感谢您对我没有遵循的最佳实践/结构的任何反馈
收回:阿利斯泰尔的答案更好&;这个程序仍然不考虑从w开始
没关系,我解决了。解决方案是向后迭代列表。这是我的完整实现
我认为当你开始看“w”时,你只需要处理这个问题。我的解决方案是无论如何都要开始计数,并在循环中遇到下一个非w时决定它应该是什么
相关问题 更多 >
编程相关推荐