【问题标题】:How to find the amount of equal characters that are next to eachother in a string?如何找到字符串中相邻的相等字符的数量?
【发布时间】:2022-01-10 18:50:18
【问题描述】:

我刚开始使用 python,我是个菜鸟。 这是我必须使用“--+-++----------------+-+”的字符串的示例 程序需要找出最长的 ++“链”,那么当它们彼此相邻时,+ 出现了多少次。我真的不知道如何解释这一点,但我需要它来找到 3 + 符号链,所以我可以打印最长的 + 链包含 3 + 符号。

【问题讨论】:

  • 一种方法(有很多方法)是逐项逐项检查,并计算重复次数,直到发生更改。您需要尝试编写一些代码来执行此操作并展示您的代码。如果它不起作用,我们可以尝试帮助修复它。

标签: python string count


【解决方案1】:
a = "--+-+++----------------+-+"


count = 0
most = 0
for x in range(len(a)):

    if a[x] == "+":
        count+=1
    else:
        count = 0

    if count > most:
        most = count


print(f"longest + chain includes {most} symbols")

可能有更好的方法,但它更容易解释

【讨论】:

  • 这行得通,谢谢:D
【解决方案2】:

试试这个。它使用正则表达式和列表推导,因此您可能需要阅读它们。
但想法是找到所有+链,计算它们的长度并得到最大长度

import re

s = '+++----------------+-+'

occurs = re.findall('\++',s)
print(max([len(i) for i in occurs]))

输出:

3

【讨论】:

    【解决方案3】:

    您可以使用正则表达式来指定“一个或多个+ 字符”。在正则表达式中指定这种重复的字符本身就是+,因此要指定实际的+ 字符,您必须对其进行转义。

    haystack = "--+-+++----------------+-+"
    needle = re.compile(r"\++")
    

    现在我们可以使用findall 在原始字符串中查找该模式的所有出现,并使用max 查找其中最长的。

    longest = max(len(x) for x in needle.findall(haystack))
    

    如果你需要目标字符串中最长序列的位置,你可以使用:

    pos =  haystack.index(max(needle.findall(haystack), key=len))
    

    【讨论】:

      【解决方案4】:

      一个简单的解决方案是一次遍历一个字符的字符串。当字符与上一个字符相同时,将一个字符加到计数器中,并且每次字符与上一个字符不同时,都可以重新开始计数。

      s = "--+-+++----------------+-+"
      
      p = s[0]
      max, count = 0
      for c in s:
          if c == p:
              count = count + 1
          else:
              count = 0
          if count > max:
              max = count
          p = c
      

      s 是字符串,c 是被检查的字符,p 是前一个字符,count 是计数器,max 是找到的最高值,

      【讨论】:

        【解决方案5】:

        如果字符串中唯一的其他字符是减号,则可以在减号上拆分字符串并获取结果子字符串的最大长度:

        a = "--+-+++----------------+-+"
        
        r = max(map(len,a.split('-')))
        print(r) # 3
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-05
          • 2012-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-29
          • 2012-10-26
          • 1970-01-01
          相关资源
          最近更新 更多