字符串
1. 概念
字符串就是特殊的字符數組,字符數組末尾的元素為 ‘\0’。和數組一樣可以使用arr[i]或*(arr+i)來訪問元素。
無論是用數組保存字符串(如:char arr[] = "Hello,World";),還是用指針保存字符串(如:char *brr = "Hello,World";),我們都可以使用字符串函數strlen(),來計算字符串長度。因為這里數組名和指針名保存著字符串在內存中的首地址,并且這里是字符串(存儲時末尾有一個隱藏的'\0'),以 '\0' 結尾。這樣,對于字符數組:使用sizeof(arr)/sizeof(arr[0]),求出來的長度比strlen求出的長度大1,因為sizeof計算數組大小時包含了'\0',strlen計算時忽略了'\0';對于字符串指針:sizeof(brr)/sizeof(brr[0])計算結果為4,因為brr是指針名,sizeof(brr)計算的是指針的大小為4,再除以元素大小1,所以結果為4。
————————————————
版權聲明:本文為CSDN博主「加油JIAX」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_50803498/article/details/126528554
2. 解題技巧(我的總結)
1> 字符串分割
題目 | 說明 | 實現 |
---|---|---|
640. 求解方程 | 通過分割字符串統計x的系數和方程的常數項 | 我的提交 |
2> 字符串匹配
KMP算法:next數組
i, l := 1, 0for i < len(s) {if s[i] == s[l] {l++next[i] = li++} else {if l == 0 {next[i] = 0i++} else {l = next[l-1]}}}
題目 | 說明 | 實現 |
---|---|---|
686. 重復疊加字符串匹配 | KMP算法,如果直到i>ab長度之和都未匹配成功,則一定無法匹配 | 我的提交 |
210. 課程表 II | KMP算法 | 我的提交 |
3> 字符串問題分類討論
題目 | 說明 | 實現 |
---|---|---|
809. 情感豐富的文字 | 使用雙指針匹配,分類討論所有情況 | 我的提交 |
816. 模糊坐標 | 分左右,分長度,再分首尾字母是否為0 | 我的提交 |
3> 字符串問題分類討論
題目 | 說明 | 實現 |
---|---|---|
955. 刪列造序 II | 從左到右按列討論,抽象成單個字符串的情形,使用所有字符串做限制 | 我的提交 |
3. 更多練習
4. 參考
- LeetCode(力扣)初級算法 字符串篇
- 總庫:tryHard