整理自我之前的博客
Longest substring without repeating characters
#include<stdio.h>
#include<stdlib.h>
#include<map>
#include<vector>
#include<string>
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{ string s;
getline(cin,s);
int buf[256];
memset(buf,-1,sizeof(buf));
int index=-1; //用来判断是否重复出现,以及最后一次重复出现的位置定为index
int Max=0;
for (int i=0;i<s.size();i++)
{
if(buf[s[i]]>index) //如果buf的s[i]大于index的值,就说明该值出现过,并且已经被更改过值 //把字符转化为ASCII码之后,赋值到buf数组中
{
index=buf[s[i]]; //如果某个值是重复出现过,只需要记录其
}
if(i-index > Max) //只要记录所出现的字符串的最大长度即可,保留Max的值
{
Max=i-index;
}
buf[s[i]]=i; //如果某个字符新出现的话,应该是更新到最后一个出现的位数 //需要先判断再赋值,否则第一次出现的字符都更改了
}
cout<<Max<<endl;
system("pause");
return Max;
}