動態(tài)網(wǎng)站建設教程外匯交易平臺
有了上一篇的基礎。這道題我們就可以輕易分析可以使用滑動窗口來解決了
方法一:滑動窗口
這里注意 ret 在while循環(huán)外部更新
在
while
外部更新ret
,確保窗口在滿足條件后再計算長度,避免錯誤計入正在調(diào)整中的窗口長度。
class Solution {public int lengthOfLongestSubstring(String s0) {int[] hash = new int[128]; //數(shù)組模擬哈希表int n = s0.length();char[] s = s0.toCharArray();int ret = 0;for(int left = 0,right = 0; right < n; right++){hash[s[right]]++; //進入窗口while(hash[s[right]] > 1){hash[s[left++]]--;}ret = Math.max(ret,right-left+1);}return ret;}
}
復雜度分析
時間復雜度:O(n),
空間復雜度:
- 常見分析: 空間復雜度為 O(1),因為哈希表是固定大小,額外空間使用與輸入大小無關。
- 嚴格分析: 如果字符數(shù)組
chars
被視為額外空間,則空間復雜度為 O(n)