checkio练习题:005-long-repeat

这个任务是这个系列中的第一个。在这里你应该找到字符串中最长的相同字符重复出现的次数,并返回它的重复次数。
例如:字符串“aaabbcaaaa”包含具有相同字母“aaa”,“bb”,“c”和“aaaa”的四个子字符串。 最后一个子字符串是最长的一个字符串,你应该返回 4 。

输入: 一个字符串.

输出: 一个整数.

例子:

long_repeat('sdsffffse') == 4
long_repeat('ddvvrwwwrggg') == 3

# 方法1
# def long_repeat(line):
#     count = 0
#     for char in line:
#         newchar = char
#         while(line.count(newchar) > 0):
#             newchar += char
#         if count < len(newchar)-1:
#             count = len(newchar)-1
#     return count

# 方法2

from itertools import groupby

def long_repeat(line):
    return max((sum(1 for i in g) for k, g in groupby(line)), default=0)



if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert long_repeat('sdsffffse') == 4, "First"
    assert long_repeat('ddvvrwwwrggg') == 3, "Second"
    assert long_repeat('abababaab') == 2, "Third"
    assert long_repeat('') == 0, "Empty"
    print('"Run" is good. How is "Check"?')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值