力扣查找無重複子串

在這裏插入圖片描述
很簡單,三個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;
    }
};

在這裏插入圖片描述
在多次調試提交下終於通過!!!

發佈了84 篇原創文章 · 獲贊 108 · 訪問量 7921
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章