给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
给定 "bbbbb"
,最长的子串就是 "b"
,长度是1。
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。请注意答案必须是一个子串,"pwke"
是 子序列 而不是子串。
class Solution {
public:
bool isrepeatSubtring(string *str,string cur){
int l=(*str).length();
if(l==0)
return false;
for(int i=0;i<l;i++){
string a=(*str).substr(i,1);
if(cur==a){
i++;
if(i!=l)
(*str)=(*str).substr(i,l-i);
else
(*str)="";
(*str)+=cur;
return true;
}
}
return false;
}
int lengthOfLongestSubstring(string c) {
string substring;
string cur;
int length,Max=0;
if(!c[0])
return 0;
for(int i=0;i<c.length();i++){
cur=c[i];
if(isrepeatSubtring(&substring,cur)==false){
substring+=cur;
}
length=substring.length();
Max=Max>length?Max:length;
}
return Max;
}
};
本题遇到的问题
问题string str; 长度 为str.length() 注意括号;
char c[100000]; c不可为char * 类型?
strcpy(c,s.c_str());
字串存在回溯 时间限制
string 指针
string 为类 length为类方法是函数,函数必须有()
char 与string的转换