網上看到一道題,找出乙個字串中的不含重複字元的最長子串,並列印,時間複雜度要求o(n)。
比如字串「abababcmdefghikjflababaefabcdezghikjfaefew」,有四個長度都為12(最長)符合條件的子串:abcmdefghikj、fabcdezghikj、abcdezghikjf和bcdezghikjfa。
分析:對於字串中第i位的字元,如果它知道以第i-1位字元結尾的無重子串的長度l[i-1],又知道第i位字元的前乙個出現位置k,於是就可以得出以第i位字元作結尾的無重子串的長度:l[i] = min(l[i-1]+1, i-k),於是可以得到乙個o(n)的演算法,列印所有符合條件的子串時,只需要遍歷l陣列一邊,如果l[i]=max,則列印以i結尾的max長子串。
最長無重複字元子串
給定乙個字串,求出其最長的無重複的字元子串的長度。例 給定字串str abcdahisjgdb 則其最長無重複子串為 bcdahisjg 長度為9。思路 我們遍歷字串,計算以每乙個字元開頭的所有無重複子串的長度,最後比較這些長度,找出最大的乙個。在每一次的迴圈中,我們用雜湊表來統計有無重複的字元。本...
最長無重複字元的子串
描述 給定乙個字串,請找出其中無重複字元的最長子字串。樣例 例如,在 abcabcbb 中,其無重複字元的最長子字串是 abc 其長度為 3。對於,bbbbb 其無重複字元的最長子字串為 b 長度為1。分析 剛開始其實也找不出思路,後面參考了網上,才理解了。總共字元有256個,可以建立乙個大小為25...
最長無重複字元的子串 LintCode
給定乙個字串,請找出其中無重複字元的最長子字串。樣例 例如,在 abcabcbb 中,其無重複字元的最長子字串是 abc 其長度為 3。對於,bbbbb 其無重複字元的最長子字串為 b 長度為1。挑戰 o n 時間 思路 遍歷字串,對於每個字元計算長度和起始位置,若在已遍歷的字串中不存在,則起始位置...