leetcode 1513 仅含1的子串数

一、题目描述

二、解题思路

解法一:双指针枚举(超时)

采用双指针枚举所有可能的子串,并用step来记录子串的数量。

解法二:找规律

我们可以采用找规律来解决这个问题,长度为n全为'1'的字符串,有n(n+1)/2个全为'1'的子字符串,所以我们可以利用这个规律,一次遍历s,在过程中统计连续'1'的个数,实时计算仅含'1'的子串的数量。

三、代码实现

解法一:双指针枚举(超时)

cpp 复制代码
class Solution {
public:
    int numSub(string s) {
        //双指针
        int step=0;
        for(int left=0;left!=s.size();left++)
            for(int right=left;right!=s.size();right++){
                if(s[right]=='1') step++;
                else if(s[right]!='1') break;
            }
        return step;
    }
};

解法二:找规律

cpp 复制代码
class Solution {
public:
    int numSub(string s) {
        int ret=0;
        int mod=1e9+7;
        long long count_one=0;

        for(int current=0;current!=s.size();current++){
            if(s[current]=='1') count_one++;
            else{
                ret+=(count_one*(count_one+1)/2)%mod;
                count_one=0;
            }
        }
        //处理最后一段
        ret+=(count_one*(count_one+1)/2)%mod;
        return ret;
    }
};
相关推荐
NAGNIP11 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
端平入洛18 小时前
delete又未完全delete
c++
颜酱20 小时前
单调栈:从模板到实战
javascript·后端·算法
CoovallyAIHub1 天前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
NAGNIP1 天前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
NAGNIP1 天前
一文搞懂激活函数!
算法·面试