日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

面试题leetcode 3. 无重复字符的最长子串 暴力法和滑动窗口解法

發(fā)布時(shí)間:2025/4/5 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试题leetcode 3. 无重复字符的最长子串 暴力法和滑动窗口解法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最初的思路遍歷每個(gè)字符,找到以它開(kāi)始的最長(zhǎng)的子串。俗稱暴力法,確實(shí)很暴力,時(shí)間復(fù)雜度達(dá)到O(n^3),唯一的好處是它能解決問(wèn)題。暴力遍歷法的大概流程是準(zhǔn)備一個(gè)hash字符數(shù)組,然后遍歷每個(gè)字符放到hash表里,有重復(fù)的則記錄子串長(zhǎng)度,然后重置hash表并從下一個(gè)字符開(kāi)始。

滑動(dòng)窗口解法時(shí)間復(fù)雜度可以達(dá)到O(n),相較于暴力法節(jié)省了不少,但其思路和暴力法卻沒(méi)有根本差異,都是遍歷字符,難就難在不容易想到。暴力解法每次遇到重復(fù)的字符都會(huì)從下一個(gè)字符開(kāi)始,滑動(dòng)窗口則是從沖突的字符下一位開(kāi)始繼續(xù)往下找,已經(jīng)確定不重復(fù)的就不用重復(fù)比較了。假定窗口存儲(chǔ)了最長(zhǎng)子串,頭尾指針?lè)謩e記為head, end。下一個(gè)字符指針是( end + 1),將該字符和[ head, end ]比較,如果在位置i 出現(xiàn)相同,則記錄當(dāng)前子串長(zhǎng)度(end - head),將窗口指針跟新為( i + 1, end + 1),如此比較,直到走到末尾,返回最大長(zhǎng)度即可,確實(shí)省了很多重復(fù)計(jì)較。

//滑動(dòng)窗口解法 int lengthOfLongestSubstring(char * s){int head, end, cur, len = 0, max = 0;head = end = 0;while(s[end] != '\0'){if (head != end){cur = head;while(cur < end){if (s[cur++] == s[end]){head = cur;break;}}}max = max > (end - head + 1) ? max : (end - head + 1);end++;}return max; }

=============================================================================================

Linux應(yīng)用程序、內(nèi)核、驅(qū)動(dòng)、后臺(tái)開(kāi)發(fā)交流討論群(745510310),感興趣的同學(xué)可以加群討論、交流、資料查找等,前進(jìn)的道路上,你不是一個(gè)人奧^_^。
?

總結(jié)

以上是生活随笔為你收集整理的面试题leetcode 3. 无重复字符的最长子串 暴力法和滑动窗口解法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。