很簡單,三個for循環可以暴力解決,但是我調試了好久就因爲想提高效率,搞成了類似kmp算法
跳轉位置有點致命,一直顯示報錯,最後改了才成功
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int flag=0,result=0,temp=1,flag1=0;
if(!s.length()){//空返回0
return 0;
}
for(int i=0;i<s.length()-1;++i){//非空情況
flag=0;
for(int j=i+1;j<s.length();++j){
for(int k=i;k<j;++k){
if(s[k]==s[j]){
flag=1;//出重標誌
break;//退出內層循環
}//檢查
}
if(!flag){
// cout<<i<<" "<<j<<" ";
temp=j-i+1;
}//不相等則相加
else{
// i=j;//i將交換到j位置,跳轉
// --i;//防止加一
if(result<=temp){
result=temp;
}//交換最大的
temp=1;//重置temp
break;//退出中層循環
}
if(j==s.length()-1){
flag1=1;
break;
}
}
if(flag1){
break;
}
}
if(result<temp){
result=temp;
}
return result;
}
};
在多次調試提交下終於通過!!!