#include<iostream>
#include<string>
using namespace std;
void longestString(const char* s) {
if (s == NULL) return;
int i = 0, j = 1, position[26],maxi=i,maxj=i;
for (int k = 0; k < 26; k++) position[k] = -1;
position[s[0]-'a'] = 0;
while (s[j]!= '\0') {
if (position[s[j] - 'a'] == -1 ||j-position[s[j]-'a']>j-i) {
position[s[j] - 'a'] = j;
j++;
}
else
{
if (maxj - maxi < j - i - 1) {
maxi = i;
maxj = j-1;
}
i = position[s[j] - 'a'] + 1;
position[s[j] - 'a'] = j;
j++;
}
}
if (maxj - maxi < j - i) {
maxi = i;
maxj = j - 1;
}
cout << maxj - maxi + 1 << " ";
for (int k = maxi; k <= maxj; k++) cout << s[k];
cout << endl;
}
int main() {
longestString("arabcacfr");
longestString("aaaa");
longestString("arabdacfd");
return 0;
}
剑指offer48
最新推荐文章于 2023-02-18 14:44:23 发布