3 無重複字元的最長字串

2022-06-13 10:18:08 字數 1430 閱讀 7354

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

示例 1:

輸入: "abcabcbb"

輸出: 3

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

示例 2:

輸入: "bbbbb"

輸出: 1

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

示例 3:

輸入: "pwwkew"

輸出: 3

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

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

1.自己的解法

class

solution

map.put(s.charat(i), i);

len=i-start+1;

if(len>max)

}return

max;

}}

記錄每乙個字元下次出現的位置,根據位置的更新最長長度會改變,start開始端的更新1.不能比當前的小2.再原始位置後移乙個;一開始想要設定乙個end位記錄最長字串的末尾,但是發現應該就是i對應的,所以沒有設定,而之前的長度記錄在max中

2.官方題解:

1.暴力解法:

對每個子字元判斷是否含有不同的字元:

public

class

solution

public

boolean allunique(string s, int start, int

end)

return

true

; }

}

2.滑動視窗:

對[i,j)的字元都不在set中,判斷[i,j+1)在不在即右移視窗,當j在set中時,把i對應的字元從set中去除,i++對每個i重複操作:

class

solution

else

}return

ans;

}}

3.優化的滑動視窗(同我的做法):

與(2)相同,只不過將i更新為j+1

public

class

solution

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

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

}return

ans;

}}

4.ascii碼解法:

用ascii碼代替hashmap:

public

intlengthoflongestsubstring(string s)

return

ans;

}

3 無重複字元的最長字串

題目描述 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。s 由英文本母 數字 符號和空格組成。例項 輸入 s abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。link 解題思路 滑動視窗 1 我們使用兩個指標表示字串中某個子串的左右邊界。其中左...

3 無重複字元的最長字串

給定乙個字串,找出不含有重複字元的最長子串的長度。示例1 輸入 abcabcbb 輸出 3 解釋 無重複字元的最長子串是 abc 其長度為 3。示例2 輸入 bbbbb 輸出 1 主要思想 滑動視窗 使用乙個容器儲存遍歷的字元。遍歷字串,同時將不重複的字元儲存到視窗中,視窗的右邊界加一,相當於向右滑...

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

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