2025.11.16 力扣每日一题
2025.11.161513.仅含1的子串数
class Solution {
public:int numSub(string s) {int mod = 1e9 + 7;//取模值,防止答案溢出int result = 0;//最终结果(所有符合条件的子串总数)int cnt = 0;//记录当前连续'1'的长度for (char c : s) {//遍历字符串的每个字符if (c == '1') {//当前字符为'1'cnt++;//连续'1'的长度加1// 累加新增的子串数:长度为 cnt 的连续 '1' 比长度为 cnt-1 时多 cnt 个新子串// (例如从 "11" 到 "111",新增的子串是 "1"(第三个1)、"11"(后两个1)、"111"(三个1),共 3 个)result = (result + cnt) % mod;} else {//当前字符为'0'cnt = 0;//连续'1'中断,重置计数}}return result;}
};
今天这个题目比较简单,想清楚就比较好做了,主要是对连续‘1’字符串数量的相加,记得取模!
