C語言練習之2最大不重複子串

2021-10-02 03:56:30 字數 660 閱讀 2759

示例 1:

輸入: 「abcabcbb」

輸出: 3

解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。

分析:0123456789

字串長度為10,那麼最大子串長度

為10,並且只有1種情況 – 0123456789

長度為9有2種情況 – 012345678,123456789

長度為8有3種情況 。。。 – 01234567,12345678,23456789

那麼可以從最大長度開始檢索,可以降低複雜度

每得到1個子串,就去判斷該子串是否有重複的字元。若沒有重複字元即為最大長度。

#include

#include

#include

intcompare

(char

*str,

int start,

int end)

}return1;

}int

lengthoflongessubstring

(char

*s)}

}return1;

}int

main

(int argc,

char

**ar**)

最大不重複子串

思路 利用hash表hashtable 256 來儲存出現過的字元,然後從頭開始遍歷字串,1 如果當前字元ch已經出現過 hashtable ch 1 則表示乙個區域性最長不重複子串已經出現 此時判斷該子串長度len是否大於mlen,如果是,則更新mlen,以及最長子串的起始位置mstart。同時將...

leetcode 3 找到最大不重複子字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

求不重複子字串的最大長度

my solution 位置 0123 45字串abc dbe 設定乙個128長度的陣列,作為每個字元是否出現過的標誌位,1表示沒出現過,i表示該字母出現在字串的第i位。遍歷字串,若該字元標誌位為 1,則長度加一,若不為 1,則轉到step3.清空無法使用的字元的標誌位為 1 無法使用即 本次計算字...