longest substring with two unique charachters

来源:互联网 发布:linux wait源码分析 编辑:程序博客网 时间:2024/06/12 00:30

O(n)双指针。

code

#include <iostream>#include <climits>#include <cmath>#include <string>#include <cstring>using namespace std;string longest(string str){    int longest = 0;int longest_start = -1;int occurance[256];int count = 0;memset(occurance, 0, sizeof(occurance));int len = str.size();int start = 0;for(size_t i = 0; i<len; i++){occurance[str[i]]++;        if(occurance[str[i]] == 1)        count++;                if(count == 3)        {            cout << i << "start" << endl;        if(i-start > longest)        {        longest = i-start;        longest_start = start;                cout << i << " longest " << longest << endl;        }                        while(count == 3)            {                occurance[str[start]]--;            if(occurance[str[start]] == 0)            count--;                start++;            }        }    }    if(len - start > longest)    {        longest = len-start;        longest_start = start;    }    return str.substr(longest_start, longest);}int main(){    cout << longest("aabadefghaabbaa") << endl;   return 0;}


0 0
原创粉丝点击