Leetcode 3題目解答

2021-12-30 01:02:27 字數 880 閱讀 8178

leetcode 3題目解答:乙個字串,要得到連續各個元素都不同的最長子串長度。

該函式返回乙個maxlen即最長子串的長度,用乙個hashmap存放字母以及其對應下標,利用for迴圈裡的i遍歷該string,則對於每個字母,有以下兩種情況:

(1)若當前字母不在hashmap中則放入,用乙個len來記錄當前符合條件的子串長度,並把其與最終要返回的maxlen比較,若len較大則其替換maxlen。

(2)若當前字母在已經在hashmap中,我們將刪掉上乙個與它相同值之前的所有內容(包含那個值本身),然後重新開始記錄乙個新的符合要求的子串。

這種情況比較難以理解,我們舉題中最後乙個「pwwkew」的例子來代入幫助理解,假設現在執行到i=2,即第二個w,此時hashmap中已經有了』p』、』w』兩個元素及其相對應的下標,我們定義乙個int型變數pre,用於記錄上乙個與當前字母值相同的元素的位置,在該例中pre=1,此時想象一下,用當前i值減去當前pre值我們可以得到乙個當前離結尾最近的各個元素都不重複的新子串長度,在該例中為1,即第二個w自身乙個字元。然後用這個新子串,我們繼續遍歷剩下對的元素。

ac碼如下:

public class solution {

public int lengthoflongestsubstring(string s) {

if(s==null)return 0;

//pre是記錄上乙個相同字母的下標,start則是記錄當前字串的開始位置,len則是記錄當前子串的長度

int start=0;

int pre=0;

int len=0;

int maxlen=0;

hashmap map = new hashmap();

for(int i=0;i

LeetCode 26題目解答

leetcode 26題目解答 給乙個陣列,刪去其中相同的元素,最後返回無重複元素的個數len,並且這個陣列的前len個元素就是。無重複的這些元素。考慮使用left,right兩個指標來看。具體過程在函式中有注釋,只需要注意一些邊界的處理。值得注意的是,不允許使用額外的空間,不允許重開陣列。29ms...

leetcode題目和解答集合

102.二叉樹的層序遍歷 給你乙個二叉樹,請你返回其按層序遍歷得到的節點值。即逐層地,從左到右訪問所有節點 解答103.二叉樹的鋸齒形層序遍歷 給定乙個二叉樹,返回其節點值的鋸齒形層序遍歷。即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行 解答其他題 大數相加演算法 題目 實現兩...

LeetCode題目1 C解答

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...