LeetCode 3無重複字元的最長子串

2021-09-25 06:03:59 字數 1001 閱讀 8030

given a string, find the length of the longest substring without repeating characters.

含義即:給出所給字串的最長無重複字母的子串長度

1.首先想到的演算法:直接掃瞄回溯尋找加上剪枝。

實際上,算不上剪枝,就是縮小解空間。

實現**如下:

private final hashsetcharspool = new hashset<>(); //當前掃瞄到的子串的字元池(無重複)

public int lengthoflongestsubstring(string s)

for(int j = i-1; j >= 0;j--)

}nowsize = 0;

charspool.clear();

}else

} if(nowsize > ret)

ret = nowsize; //防止最後正常掃完之後沒有處理

return ret;

}

2.第二個想到的演算法:利用分治演算法。

(未實現)

思考問題的時候最好不要高估自己,一定要用紙筆將各種情況列寫在紙上,確認真實可行之後再進行操作。

此外要充分考慮到提高效率時,根據各個adt的特點而選取適合的adt。

最重要的一點!!

一定要深挖規律,從不同角度看這個問題。

首先想到的演算法由於沒有沒有提前快取資訊,任何東西都是現查的,所以導致效率低下,資訊沒有充分利用好。

如下兩張圖

而後看了別人的**,既簡短還高度精煉。最後發現就是因為它充分使用了map的特性。每次都將字元和當前檢測到的index作為鍵值對put進map之中,到時候只需要根據是否有鍵存在即可檢測有無重複字元出現。

leetcode 3 無重複的字串

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

leetcode 3 無重複字元的最長字元子串

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

leetcode 3 最長無重複字串

3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...