Hi奠骄,大家好,我是小莊番刊。
今天打卡的算法題是 —— 力扣 3. 無重復字符的最長子串
該題是校招+社招中含鳞,考查頻率排名第二的算法題,考察頻率排名第一的是反轉(zhuǎn)鏈表芹务,詳細解法請看公眾號中的上一篇文章蝉绷。
該題將采用「哈希表 + 滑動窗口」實現(xiàn),話不多說枣抱,一起來學習吧~
一熔吗、Leetcode題目
1、題目地址
2佳晶、具體題目
二桅狠、實現(xiàn)代碼
1、思路:哈希表 + 滑動窗口
(1)具體代碼
/**
* @param {string} s
* @return {number}
*/
// 哈希表 + 滑動窗口
// 時間復雜度: O(n),n為字符串s的長度
// 空間復雜度: O(n), n為map的長度
var lengthOfLongestSubstring = function(s) {
let map = new Map();
let start = 0;
let end = 0;
let max = 0;
while(true) {
if(end >= s.length) {
break;
}
let temp = map.get(s[end]);
//map中還沒存在
if(temp === undefined || temp < start) {
max = Math.max(max, end - start + 1);
}else {//map中已經(jīng)存在了
start = temp + 1;
}
map.set(s[end], end);
end++;
}
return max;
};
<br />
(2)運行結(jié)果
<br />
三、講解視頻
四中跌、補充部分
關注公眾號:【深漂程序員小莊】:
內(nèi)含豐富的學習資源和面試經(jīng)驗(不限前端咨堤、java),還有學習交流群可加漩符,并且還有各大廠大佬可一起交流學習一喘,一起進步~添加小莊微信,回復【加群】嗜暴,可加入互聯(lián)網(wǎng)技術交流群凸克。
本文由mdnice多平臺發(fā)布