字串substr法,定义字串的头部和长度,和字串后一位对比,如果不存在重复元素则长度+1,存在重复元素则头部更新,长度重置。
cpp
class Solution {
public:
int lengthOfLongestSubstring(string s) {
string s2;//存放s的前一部分,判断该部分有没有后一个字符
int res = 1;
int start = 0;//子序列第一个的序号
int len = 1;//连续的前端子序列长度
if(!s.size()) return 0;
if(s[0] == ' ') return 1;
for(start = 0; ; )
{
if(start+len == s.size()) return res;
s2 = s.substr(start,len);//一开始存放第一个字符
if(count(s2.begin(),s2.end(),s[start+len]))//判断有没有重复,重复就重新开始计数
{
start += 1;//重复则start变到尾部后一位
res = max(res,len);
len = 1;
}
else//不重复start不变
{
len++;
res = max(res,len);
}
}
return res;
}
};