力扣每日一题(二十——仅含1的子串数)

仅以此纪录每日LeetCode所刷题目

题目描述:

示例:

思路:

这道题其实是一个巧算,想到方法之后代码就非常简单。这个字符串是由0和1组成的,而这道题只和1有关系,我们首先将这个字符串以0为分隔符分割开来。接着我们需要发现一个规律,我们首先举一例子,在'11111'中有一个'11111',两个'1111',三个'111',四个'11',五个'1'我们可以使用循环将他们表示出来:

for j in range(1,len('11111') + 1):

这个循环 的输出为1 2 3 4 5,正好就是'11111'串中字符为1的字串的个数。因此,这道题只需要两个for循环即可解决。

代码:

class Solution:
    def numSub(self, s: str) -> int:
        count = 0
        for i in s.split("0"):
            for j in range(1,len(i) + 1):
                count += j
        return count%1000000007

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值