有没有一种简单的方法来获取单词中重复字符的数量?

我正在尝试获取一个单词中任何字符重复的次数。重复必须是连续的。

例如,带有输入的方法"loooooveee"应该返回 6(4 次 'o',2 次 'e')。

我正在尝试实现字符串级别的函数,我可以这样做,但是有没有一种简单的方法可以做到这一点?正则表达式,或其他类型的东西?


红糖糍粑
浏览 190回答 3
3回答

繁星coding

原问题: order of repetition does not matter您可以用总字母数减去唯一字母的数量。set应用于字符串将返回唯一的字母集合。x = "loooooveee"res = len(x) - len(set(x))  # 6或者您可以使用collections.Counter,从每个值中减去 1,然后sum:from collections import Counterc = Counter("loooooveee")res = sum(i-1 for i in c.values())  # 6新问题: repetitions must be sequential您可以使用itertools.groupby对连续的相同字符进行分组:from itertools import groupbyg = groupby("aooooaooaoo")res = sum(sum(1 for _ in j) - 1 for i, j in g)  # 5为避免嵌套sum调用,您可以使用itertools.islice:from itertools import groupby, isliceg = groupby("aooooaooaoo")res = sum(1 for _, j in g for _ in islice(j, 1, None))  # 5

呼啦一阵风

我认为你的代码正在比较错误的东西您首先找到最后一个字符:char = text[-1]然后将其与自身进行比较:for i in range(1, len(text)):&nbsp; &nbsp; if text[-i] == char: #<-- surely this is test[-1] to begin with?为什么不直接遍历字符:def measure_normalized_emphasis(text):&nbsp; &nbsp; char = text[0]&nbsp; &nbsp; emphasis_size = 0&nbsp; &nbsp; for i in range(1, len(text)):&nbsp; &nbsp; &nbsp; &nbsp; if text[i] == char:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; emphasis_size += 1&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; char = text[i]&nbsp; &nbsp; return emphasis_size这似乎有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python