ゼロから始まるleetcodeブラシ問題——第3題

1769 ワード

------------------------------------------------------------------2019.04.01
テストに問題はなく、スタックオーバーフローが発生した3番目の問題を提出します.
自分のIDEでテストして問題がなくて、どうして分かりませんか?
int lengthOfLongestSubstring(char* s) {
    char *source;
    int s_size,long_size;
    int i,j;

    source=s;
    s_size=1;
    long_size=s_size;// 

    for(i=1;s[i]!='\0';i++){
        // 
        for(j=0;j<=s_size-1;j++){
            if(source[j]==s[i]){// , 
                // longest
                if(s_size>long_size){
                    long_size=s_size;
                }
                source=s+i;// 
                s_size=1;
                j=s_size+1;
            }
        }

        if(j>s_size) continue;

        if(j==s_size){// 
            s_size++;
        }
    }

    return long_size;
}

---------------------------------------------------------2019.04.02
昨夜問題点を発見した.
なぜならforループにおける判断条件s[i]!='0 '   
この条件をiに変更する
提出に成功しました
プログラムコードに問題がある
修正版は以下の通り

int lengthOfLongestSubstring(char* s) {
    int size;// 
    int front,rear;// 
    int i,j;// 
    int temp=0;// 

    rear=front=0;
    size=front-rear+1;// 

    if(strlen(s)==0) return 0;

    for(i=1;isize){
                    size=front-rear+1;
                }

                i=front;
                rear=j+1;

                temp=1;
                break;
            }
        }

        if(temp)
            continue;
        else
            front++;


        if(front-rear+1>size){
            size=front-rear+1;
        }

    }
    return size;
}

実行時間:120 msメモリ消費量:7 MB
前にコミットに失敗しました.時間がかかりすぎたため、簡単に修正しても通過できますが、時間とメモリはまだできません.
コードはさらに最適化する必要があります.