c++ - C ++中二进制数组中最大连续的开始和结束索引
问题描述
如何在二进制数组中找到最长连续 1 的开始和结束位置(或)索引
例如:110011110011 -> 起始位置为 4,结束位置为 7
解决方案
试试这个代码:
#include<iostream>
#include<string>
using namespace std;
int main(){
int longest = 0;
int stpos = 0;
int lpos = 0;
string s = "110011110011";
for(int i=0; i<s.length();){
char current = s[i];
int currLen = 0;
for(;i<s.length() && current == s[i]; ++i){
++currLen;
stpos = i;}
if(currLen > longest){
longest = currLen ;
lpos = stpos;}
}
cout<<"longest streak length:"<<longest<<endl;;
cout<<"starting index:"<<lpos-longest+1<<endl;
cout<<"ending index:"<<lpos<<endl;;
return 0;
}
输出是:
longest streak length:4
starting index:4
ending index:7
推荐阅读
- python - 在 Python 中具有更大程度控制的 HTTPServer
- php - laravel 上的格式化时间
- sympy - SymPy:名称“符号”未定义
- rest - RabbitMq RPC 与其他同步方法
- birt - 数据类型为十进制时如何在表格中将空值显示为 N/A
- read-the-docs - readthedocs.org 中的“私人”权限设置 - 它是如何工作的?
- c# - 如何在不复制的情况下剪切原始数组
- swift - 如何手动释放 CMSampleBuffer
- h2o - 是否有可能从 H2O 中的拟合 GLM 模型中获得惩罚似然?
- docker - docker容器中的ActiveMQ Artemis GUI Jolokia访问