演算法題 無重複字元的最長子串

2022-05-17 20:31:44 字數 1422 閱讀 9569

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

示例 1:

輸入: "abcabcbb"

輸出: 3

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

示例 2:

輸入: "bbbbb"

輸出: 1

解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。

示例 3:

輸入: "pwwkew"

輸出: 3

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

請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。

我的題解

我的想法:以每個字元為起始查詢最長無重複子串,從中找出最長的無重複子串

public static int lengthoflongestsubstring(string s) 

subset.add(s.charat(j));

}maxlenth = math.max(maxlenth,subset.size());

}return maxlenth;

}

這種思路跟官方題解的滑動法有點相似,官方題解還有一種優化滑動法速度很快,所以要好好學演算法啊,下面看一下執行結果對比

下面是我的執行效果,上面是官方題解(方法三)的執行效果

官方題解

官方題解給了三種方法:

第一種是暴力法,思路是查詢所有子串,找出最長的子串,速度慢的一批,不介紹了,有興趣的上面有鏈結自己去看

第二種是滑動法

思路:

public int lengthoflongestsubstring(string s) 

else

}return ans;

}

複雜度:

第三種是優化滑動法

思路:

public int lengthoflongestsubstring(string s) 

ans = math.max(ans, j - i + 1);

map.put(s.charat(j), j + 1);

}return ans;

}

複雜度:

演算法題 無重複字元的最長子串

問題 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。思路 ...

php演算法題 無重複字元的最長子串

閱讀量終於破萬了,不容易啊,不過看到訪問量大的也就那麼幾個,都是比較常見的問題,其他的文章仍然是沒人理採。不說這了,說說今天做的乙個演算法提,頭大啊 題目給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc...

無重複字元最長子串

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