字串匹配
字串和數字運算
字串和陣列其實不分家的,很多演算法都是需要相互轉換或者是通用的,下面總結一些常見的字串演算法題型。
翻轉整個字串
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...