表し、最小値と最大値の文字列を表します

T sが同じ最小値と最大辞書文字列の文字列内のすべての文字列の長さとなるように、文字列tを求め、環状ストリングの所与

例えば:

最小の文字列abcdaad aadabcd、最大文字列がdabcdaaです

「5612358」は、最大文字列が「8561235」であり、最小の文字列「1235856」であります

 

//返回字符串的最小表示
機能getMin(S){ 
    I、J、K、Lましょう。
    CONST N = s.length。
    S + =秒; 
    用(i = 0、J = 1、J <N;){ 
        ため(k = 0; kは<N && S [I + K] === S [j + k]は、++ K)。
        もし(K> = N)、ブレーク。
        IF(S [I + K] <S [J + K])
            J + = K + 1。
        他{ 
            L = iがkは+。
            私はjは=。
            J = Math.max(L、J)+1。
        } 
    } 

    戻りs.substr(I、N)
} 

//返回字符串的最大表示
機能getMax(S){ 
    せてI、J、K、L。
    CONST N = s.length。
    S + =秒; 
    用(i = 0、J = 1、J <N;){ 
        ため(k = 0; kは<N && S [I + K] === S [j + k]は、++ K)。
        もし(K> = N)、ブレーク。
        IF(S [I + K]> S [J + K])
            J + = K + 1。
        他{ 
            L = iがkは+。
            私はjは=。
            J = Math.max(L、J)+ 1; 
        } 
    } 

    戻りs.substr(I、N)
}

  

  

おすすめ

転載: www.cnblogs.com/caoke/p/10948923.html