我试图找到没有重复字符的最长的子串。 我有一个布尔向量来跟踪256个ASCII字符。C++中最长的非重复子串
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string s = "aaaaaaaaaaaaasadfrhtytbgrbrsvsrhvsg";
vector<bool> v(256, false);
int j = 0, len = 0, index = 0;
for(int i = 0; i < s.length(); i++)
{
if(!v[s[i]])
{
j++;
if(j > len)
{
len = j;
index = i - j;
}
v[s[i]] = true;
}
else
{
j = 0;
v.clear();
}
}
cout << s.substr(index, len) + " " << len << endl;
}
我可以理解为什么它给人的输出adfrht 6
,whreas正确的输出是sadfrhty 8
你是说你不能或不能理解? – Ediac
你有没有时间复杂度限制?或者无论执行多长时间,您只需要答案。 – Rasool
@算法算法似乎是正确的。 – adrian008