首页 > 解决方案 > C ++中二进制数组中最大连续的开始和结束索引

问题描述

如何在二进制数组中找到最长连续 1 的开始和结束位置(或)索引

例如:110011110011 -> 起始位置为 4,结束位置为 7

标签: c++

解决方案


试试这个代码:

    #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

推荐阅读