2022-1-15 Leetcode 1513.仅含1的子串数
class Solution {public:int numSub(string s) {long long count = 0;int ret = 0;// //子串为 "1"// for(char ch : s){// if(ch == '1')// count = count % (10e9 + 7) + 1;// }// for(int i = 0;i < s.size()-1;i++){// if(s.substr(i,2))// }for(int len = 1;len <= s.size();len++){string model(len,'1');for(int i = 0;i <= s.size()-len;i++){if(s.substr(i,len) == model){count = count % 1000000007 + 1;}}}ret = count % 1000000007;return ret;}
};
时间复杂度为 O(n^2),所以当数组特别特别长的时候,循环非常的难
我换了一种方法。将字符串每次遇到 0 都切割成连续为 1 的子串,统计每个子串出现的次数,并且计算每个子串含1的子串个数(等差数列求和 n(n+1)/2)
总的子串个数 = 每个子串的子串个数 * 子串出现的次数
class Solution {public:int numSub(string s) {map<int,int> my_map;//第一个int统计连续1的字符串的长度,第二个int统计这样的子串的出现次数int i = 0;int ret = 0;long long ans = 0;while(i < s.size()){int len = 0;while(s[i] == '1'){++len; ++i; }my_map[len]++;while(s[i] == '0')++i;}for(auto it = my_map.begin();it != my_map.end();it++){ans += getCount(it->first) * it->second;ans %= 1000000007;}ret = ans % 1000000007;return ret;}int getCount(int n){int ret = 0;for(int i = 1;i <= n;i++){ret += i;}return ret;}
};
这个方法遇到下面的例子会导致堆栈溢出。
别人的写法
等差数列求和那一步真的是神妙。
class Solution {public:int numSub(string s) {int mod = 1e9+7;int count = 0,ret = 0;for(int i = 0;i < s.size();++i){if(s[i] == '1'){count++;ret = (ret + count) % mod;//这个等差数列求和写的真好}else{count = 0;}}return ret;}
};
2022-1-15 Leetcode 1513.仅含1的子串数相关推荐
- Windows批处理命令快速获取文件夹下特定类型的文件名(2022.5.15)
Windows批处理命令快速获取文件夹下特定类型的文件名 (2022.5.15) 1.需求分析 2.batch简介 3.代码实现 3.1 八种编程语言分别实现 3.1.1 C# 实现 3.1.2 C+ ...
- P1422 小玉家的电费--2022.03.15
/* P1422 小玉家的电费--2022.03.15 https://www.luogu.com.cn/problem/P1422 */ #include <bits/stdc++.h> ...
- Xilinx HLS 导出IP失败的最新解决方案(2022.1.15)
Xilinx HLS 导出IP失败的最新解决方案(2022.1.15) 作者主页: 从2022年1月1日起,所有版本的XIlinx HLS或者是Vitis HLS中的导出IP功能在使用时均会报错,同时 ...
- 日拱一卒——LeetCode 844.比较含退格的字符串
大家好呀,今天为大家带来的LeetCode的题目是LeetCode 844.比较含退格的字符串.算是一道比较基础的题目. 题目 分析 这道题目相对简单,主要就是将时间复杂度和空间复杂度降低下来. 解法 ...
- vp视频结构化框架(2022/9/15更新)
完成多路视频并行接入.解码.多级推理.结构化数据分析.上报.编码推流等过程,插件式/pipe式编程风格,功能上类似英伟达的deepstream和华为的mxvision,但底层核心不依赖复杂难懂的gst ...
- Python线性回归:加载共享自行车租赁数据集 BikeSharing.csv。 1. 按以下要求处理数据集 (1)分离出仅含特征列的部分作为 X 和仅含目标列的部分作为 Y。
加载共享自行车租赁数据集 BikeSharing.csv. 按以下要求处理数据集 (1)分离出仅含特征列的部分作为 X 和仅含目标列的部分作为 Y. (2)将数据集拆分成训练集和测试集(70%和 30 ...
- English Learning - L1-4 从此没有不会的表达(下) 2022.12.15 周四
English Learning - L1-4 从此没有不会的表达(下) 2022.12.15 周四 5 动名词 5.1 动名词都有什么作用 作主语 做表语 做定语 动名词做定语有啥讲究? 做宾语 5 ...
- 最新苹果二手报价单(2022.2.15)
2022.2.15换换回收iPhone苹果二手机报价单(按照内存.靓机.小花.大花.花机四个等级进行报价)如下所示
- BBC UK News(2022.04.15)
BBC UK News(2022.04.15) 目录 Harry and Meghan visit Queen on way to Invictus Games Sunken Russian wars ...
最新文章
- 第24课 《前端之路,以不变应万变》
- 从实际案例聊聊Java应用的GC优化
- 划词翻译软件QTranslate 6.7.3 中文绿色版
- DBCP使用BasicdataSource连接(两种单例模式-----饿汉和懒汉模式)
- 【Unity】12.4 通过网格分层选择行进路线
- hbase/thrift/go连接失败
- 大众宣布成立欧洲公司 负责旗下电动汽车电池业务
- 羊车门问题python程序_用Python实现羊车门问题
- C语言学习笔记---字符串查找函数strstr()和strpbrk()函数
- ios 给网页传值_iOS开发—页面传值汇总
- 函数沿某一方向的变化率_多元函数知识点(1)
- API调用,API传参,面向对接开发,你真的会写接口文档吗?
- TOAD 调试存储过程的方法
- ppa什么网_ppa网站-和ppa网站相关的内容-阿里云开发者社区
- 10种人脉裂变技能,6个裂变核心,8个吸粉人性本能怎样玩粉丝裂变?
- 客户关系管理(CRM)是什么?
- 云大计算机应用技术考研2021,2021云南大学考研经验贴
- Elasticsearch的节点与分片
- 人生重开模拟器 的主逻辑:每一年先判断天赋再判断事件
- NormalBlend