飯後小甜點leetcode 字串中的演算法

2021-09-24 17:21:37 字數 1775 閱讀 4192

字串匹配

字串和數字運算

字串和陣列其實不分家的,很多演算法都是需要相互轉換或者是通用的,下面總結一些常見的字串演算法題型。

翻轉整個字串

344. 反轉字串

【思路】兩頭逼近

public

void

reversestring

(char

s)}

分組翻轉字串

2k個一組,每組翻轉前k個,不滿k個的組全部翻轉,介於k和2k之間的組翻轉前k個

public

string

reversestr

(string s,

int k)

while

(l < r)

i += k *2;

}return

newstring

(res)

;}

字串內部的單詞位置翻轉(引數為string)

乙個字串,把裡面的每乙個單詞進行單詞間翻轉,單詞間空格只保留乙個,多餘的不要。

【思路】就**簡潔度來說,直接用c#的linq解決。

【易錯點】記住函式咋呼叫

public

string

reversewords

(string s)

字串內部的單詞位置翻轉(引數為char)

【思路】兩次翻轉,第一次翻轉範圍為整個字元陣列,第二次(或者說後面的n次)翻轉每個單詞內部

public

class

wordsreverseii

//第二次呼叫

swap

(str, i, j -1)

; i = j +

1; j = i;}}

public

void

swap

(char

str,

int i,

int j)

}}

字串中的單詞內部翻轉

【思路】跟上一題差不多,這道題給的條件是沒有多餘空格,所以直接從上一題改改就行。

public

class

wordsreverseiii

swap

(arr, i, j -1)

; i = j +

1; j = i;

}return

newstring

(arr);}

public

void

swap

(char

str,

int i,

int j)

}}

實現strstr()

leetcode題目位址

【思路】用kmp演算法

【複雜度】o(n)

public

intstrstr

(string s,

string t)

else j = next[j];}

if(j == t.length)

return i - j;

return-1

;}private

int[

]getnext

(string t)

else j = next[j];}

return next;

}

LeetCode小演算法記錄(一)

給定兩個排序後的陣列 a 和 b,其中 a 的末端有足夠的緩衝空間容納 b。編寫乙個方法,將 b 合併入 a 並排序。初始化 a 和 b 的元素數量分別為 m 和 n。示例 輸入 a 1,2,3,0,0,0 m 3 b 2,5,6 n 3 輸出 1,2,2,3,5,6 package leetcod...

小程式 字元統計

我不是標題黨,大家也不要被標題唬住了,這裡的 字元統計 其實是指大寫字母,小寫字母,空格,數字以及其他字元。如果不符合您的需求,不好意思浪費您時間,請到此止步,因為下面這個 確實沒啥含金量,完全是我個人為了滿足碼字,敲鍵盤的快樂瞎弄的。上乙個傻乎乎的程式 題目 字元統計 無聊,翻大學課本,亂翻題目隨...

字元操作小技巧總結

利用api函式isdbcsleadbyte 非零為多位元組的首字元,否則為單位元組字元。例如 if isdbcsleadbyte str.getat num 具體實現如下 cstring cteststrcutdlg getleftcut cstring str,int num if num 0 c...