資料結構與演算法

2021-10-02 05:19:48 字數 2125 閱讀 4419

思路都在注釋裡了

public

intlengthoflongestsubstring

(string s));

//判斷str是否存在於tempstr中

if(tempstr.

contains

(str)

)//儲存重複字元

int reindex = tempstr.

indexof

(str)

;// 刪除tempstr中的重複位元組及其之前的字元

for(

int j=

0;j<=reindex;j++)}

//將當前字元存入tempstr中

tempstr.

add(str);}

//最終判斷

if(tempstr.

size()

> maxstr.

size()

)//返回最長字串的長度

return maxstr.

size()

;}return0;

}

參考了leetcode的題解,思路很清晰,用了滑動視窗。

模擬了乙個最大長度為給定單詞長度之和的滑塊(words.length * len)。讓滑塊在字串s上滑動,通過判定滑塊捏的字元是否匹配給定單詞來儲存下標。 然後做了一些優化處理。

1.首先我快取了所有words中個word 在字元s中的下標。在後續比較中直接比較map,減少迴圈次數。

2.滑塊每次滑動的長度為單詞的長度 len。這樣滑塊中間的資料不用重複比較。滑塊分別從下標 0 到len-1共迴圈滑動 len次。

3.下標為0時,滑塊判定的資料為 0, len , 2 * len, 3*len…

4.下標為1時,滑塊判定的資料為 1,len +1, 2 len+1 ,3len+1…

5.迴圈構建滑塊,從map中快取在下標開始構建,當滑動到不在map中的單詞時,銷毀滑塊。直到下乙個有效下標重新構建。

6.在滑動滑塊的過程中,記錄滑塊內有效的單詞個數 flagnum.每次滑動後。7.如果有效的單詞個數與總單詞個數相同,時滑塊內的資料就是我們所要的。

public

static list

findsubstring

(string s, string.

.. words)

char

tem = word.

tochararray()

;while

((idx =

indexof

(schars, schars.length, tem, len, idx +1)

)>-1

) wordmap.

put(word,1)

;}string word;

int slidelen = len * words.length;

// 滑塊長度

int n;

// 臨時變數

maptemwordmap =

newhashmap

<

>()

;for

(int k =

0; k < len; k++

)// 滑塊長度增加 在尾部新增

word = idxmap.

get(j)

; n = temwordmap.

get(word)-1

; temwordmap.

put(word, n);if

(n >=0)

flagnum++;if

(j - i >= slidelen)

if(flagnum == words.length)

list.

add(i);}

else}}

return list;

}

應用了滑動視窗
public

intbalancedstring

(string s)

if(q==w && w==e && e==r)

return0;

cur=0;

while

(curcur++;}

return res;

}

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...

資料結構 資料結構與演算法01

1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...

資料結構 資料結構與演算法02

1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...