給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。
輸入: "pwwkew"要查詢無重複字元的最長子串,至少要從左往右掃瞄一遍。輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。
為了確定字串有無重複及重複的位置,我使用雜湊表來儲存掃瞄過的字元。如果在掃瞄過程中遇到 了重複的,就退回重複字元的下乙個字元,重新開始掃瞄。這樣逐個找出所有無重複的字串,從中選出最長的。
使用這種方法,只有乙個索引i,每次遇到重複,i都會回溯,從而浪費了相當多的時間。
class solution
else if(p != hash.end())
hash[s[i]] = i;
if (temp > ans)
ans = temp;
}return ans;}};
官方給出的題解中提到了滑動視窗的方法,視窗中是無重複的字元子串。定義乙個視窗使用這種方法,當i向右滑動時,
class solution
else
}return ans;}};
滑動視窗的方法還可以繼續優化。如果s[j]在
class solution
return ans;}};
LeetCode刷題打卡(3)
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。首先,可以排除負數。負數一定不是回文數。拿到這一題,我感覺思路和整數翻轉那道題差不多,通過比較翻轉後的數與原來的數是否相等,可以判斷該數是否為回文數。因為要考慮int溢位的問題,且已經排除了負數,我把翻轉後的數定...
leetcode刷題打卡 53
給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6解釋 連續子陣列 4,1,2,1 的和最大,為 6。此題為簡單題。首先考慮何時連續子陣列的的和最大,當連續子陣列的第一位和最後一位是負數時,很顯然可...
LeetCode 每日 1 題 打卡刷題計畫
活動頁面 佇列 隊首出,隊尾進 先進先出 queue 的基本操作有 q.push x 隊尾 d.push back x 隊尾 d.push front x 隊首 q.pop d.pop back d.pop front struct listnode vector操作push back 在陣列的最後...