【问题标题】:Python longest character sequence in a stringPython字符串中最长的字符序列
【发布时间】:2021-04-14 18:42:05
【问题描述】:

我正在研究 python,但在实验室遇到了问题。需要计算字符串中s字符的最长序列,只能使用for循环等基本工具。

我提出的代码有效,但感觉就像我使用了不恰当的逻辑,添加了一个带有额外空间的 sequence_extended 变量。但是,如果没有此扩展名,则序列为例如sssdssss 计算只适用于第一个序列。

有没有办法避免这种扩展?我已经尝试过寻找一个想法,但解决方案通常是使用我们还不允许使用的功能,例如列表等。

sequence = input('enter a line: ')
sequence_extended = sequence + ' '
counter = 0
final_counter = 0

for symbol in sequence_extended:
  if symbol == 's':
    counter += 1
    
  else:
    if counter > final_counter:
        final_counter = counter
        counter = 0


print("The longest sequence of 's':", final_counter)

【问题讨论】:

  • 你不能用字典吧?
  • @Mick 是的,没错
  • 这是一个简单的问题,等等
  • 如果最后一个符号是“s”,您需要添加一行。正如您现在所拥有的那样,最终计数器仅在最后一个字符不是“s”时才会更新(为什么在末尾添加额外的空格会修复它)。
  • 你可以使用while循环吗?如果不是,我可以将其设为 for 循环

标签: python string character lab


【解决方案1】:
sequence = "sssdssss"
max_len = 0

for i in range(len(sequence)):
    if sequence[i] == "s":
        j = i
        length = 0
        while j < len(sequence) and sequence[j] == "s":
            length += 1
            j += 1
        if length > max_len:
            max_len = length

print("The longest sequence of 's':", max_len)

【讨论】:

  • 非常感谢!完全有效,我明白了逻辑。欣赏!
  • 没问题,编码愉快!
【解决方案2】:

事实上,我想出了一个更简单的选择:

sequence = input('enter a sequence: ')

first_counter = 0
second_counter = 0

for symbol in sequence:
  if symbol == 's':
    first_counter += 1
  if symbol != 's':
    first_counter = 0  
  if second_counter < first_counter:
    second_counter = first_counter
print("the longest sequence of 's':", second_counter)

这似乎是该问题的最佳解决方案。以防万一其他人有这样的实验室要解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多