给定一个字符串,找到最长的子串,要求该子串中没有重复的字符。
例如:
字符串abcabcbb
的不含重复字符的 最长 子串为abc
,长度为 3。
而bbbbbb
的不含重复字符的 最长 子串为b
,长度为 1。
输入格式
输入包含多行,每一行对应一个长度不超过 100 的输出,直到遇到结束符为止。每行依次输入字符串s。
输出格式
输出不含重复字符的 最长 子串的长度。
样例输入
hchzvfrkmlnozjk
样例输出
11
#include<bits/stdc++.h>
using namespace std;
int main(){
int k,mx;
string s;
map <char,int> mp;
while(cin >> s){
mp.clear();
mx = 0;
for(int i = 0;i < s.size();i++){
k = 0;
//从i开始进行检索,遇到重复的就退出,并且将mp清空,否则插入,计数器++
for(int j = i;j < s.size();j++){
if(!mp[s[j]]){
mp[s[j]]++;
k++;
}
else{
mp.clear();
break;
}
}
mx = max(k,mx);//计算最大值
}
printf("%d\n",mx);
}
}