题意:给一个字符串,求不含相同字符的最大字符串长度。
感觉有点像细节实现题,很多细节注意下就好了,我的想法就是定一个开端beg和拓展长度ans,从ans开始搜索,如果下一位没有在当前选定字符串中出现,那么就ans++扩大子串范围,如果遇到了一位在选定字符串中出现,那么就将我们的开端定到这个重复的字符的下一位继续搜索,每一次都会刷新ans的值求原ans和现ans的最大值,最后得出结果
class Solution {
public:
int lengthOfLongestSubstring(string s) {
string sb;
int n=s.length();
if(!n)
return 0;
int ans,maxn,beg=0;
ans=maxn=1;
while(beg+ans<n)
{
sb=s.substr(beg,ans);
for(int j=0;j<sb.length();j++)
{
if(sb[j]==s[beg+ans])
{
beg+=(j+1);
ans-=(j+1);//beg=j+1
}
}
ans++;
maxn=max(maxn,ans);
}
return maxn;
}
};