請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。假設字串中只包含'a'~'z'的字元。例如,在字串「arabcacfr」中,最長的不含重複字元的子字串是「acfr」,長度為4。
思路:常規套路的話,先求有多少個子字串,再看看是否有重複字元,那麼一套下來就要o(n^3)。有點多,那麼就用動態規劃咯。
int longestsubstringwithoutduplication(const std::string& str)
int curlength=0;
int maxlength=0;
int* position=new int[26] ;
for(int i=0;i<26;i++)
position[i]=-1;
for(int i=0;i
position[str[i]-'a']=i;}
if(curlength>maxlength)
maxlength=curlength;
delete position;
return maxlength;
面試題48 最長不含重複字元的子字串
請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。假設字串中只包含a z的字元。例如,在字串 arabcacfr 中,最長的不含重複字元的子字串是 acfr 長度為4。我們定義函式f i 表示以第i個字元為結尾的,不包含重複字元的子字串的最長長度。我們從左到右逐一掃瞄字串中的每...
面試題48 最長不含重複字元的子字串
題目描述 請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pw...
面試題48 最長不含重複字元的子字串
題目 請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。示例 示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 p...