#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
const char* p = str.c_str(); //将字符串转换为const char*,以便使用strlen获取字符串的长度
int length = strlen(p);
cout << length << endl;
int hash[256];
memset(hash,-1,sizeof(hash));
int lastStart = 0;
int curlen = 1;
int maxLength = 0;
hash[str[0]] = 0;
for(int i = 1;i < length;i ++){
if(hash[str[i]] == -1){
curlen++;
hash[str[i]] = i;
}else{
if(lastStart <= hash[str[i]]){
curlen = i - hash[str[i]]; //修改当前长度,从与当前字符相同的坐标+1开始到当前坐标的长度
lastStart = hash[str[i]] + 1;
hash[str[i]] = i;
}else{
hash[str[i]] = i; //虽然上一个值在当前起点之前,但是还是要记录下新的位置,以防后面还有第三个值
curlen++;
}
}
//每一以循环过后比较是否超过之前的最大长度
if(curlen > maxLength){
maxLength = curlen;
}
}
cout << maxLength << endl;
return 0;
}
转载于:https://my.oschina.net/handsomedz/blog/659122