mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
更新 字符串总结 排版格式修复
This commit is contained in:
@ -11,7 +11,7 @@
|
||||
|
||||
那么这次我们来做一个总结。
|
||||
|
||||
# 什么是字符串
|
||||
## 什么是字符串
|
||||
|
||||
字符串是若干字符组成的有限序列,也可以理解为是一个字符数组,但是很多语言对字符串做了特殊的规定,接下来我来说一说C/C++中的字符串。
|
||||
|
||||
@ -42,7 +42,7 @@ for (int i = 0; i < a.size(); i++) {
|
||||
所以想处理字符串,我们还是会定义一个string类型。
|
||||
|
||||
|
||||
# 要不要使用库函数
|
||||
## 要不要使用库函数
|
||||
|
||||
在文章[344.反转字符串](https://programmercarl.com/0344.反转字符串.html)中强调了**打基础的时候,不要太迷恋于库函数。**
|
||||
|
||||
@ -52,7 +52,7 @@ for (int i = 0; i < a.size(); i++) {
|
||||
|
||||
**如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。**
|
||||
|
||||
# 双指针法
|
||||
## 双指针法
|
||||
|
||||
|
||||
在[344.反转字符串](https://programmercarl.com/0344.反转字符串.html) ,我们使用双指针法实现了反转字符串的操作,**双指针法在数组,链表和字符串中很常用。**
|
||||
@ -67,7 +67,7 @@ for (int i = 0; i < a.size(); i++) {
|
||||
|
||||
一些同学会使用for循环里调用库函数erase来移除元素,这其实是O(n^2)的操作,因为erase就是O(n)的操作,所以这也是典型的不知道库函数的时间复杂度,上来就用的案例了。
|
||||
|
||||
# 反转系列
|
||||
## 反转系列
|
||||
|
||||
在反转上还可以在加一些玩法,其实考察的是对代码的掌控能力。
|
||||
|
||||
@ -87,7 +87,7 @@ for (int i = 0; i < a.size(); i++) {
|
||||
|
||||
在[字符串:反转个字符串还有这个用处?](https://programmercarl.com/剑指Offer58-II.左旋转字符串.html)中,我们通过**先局部反转再整体反转**达到了左旋的效果。
|
||||
|
||||
# KMP
|
||||
## KMP
|
||||
|
||||
KMP的主要思想是**当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。**
|
||||
|
||||
@ -110,7 +110,7 @@ KMP的精髓所在就是前缀表,在[KMP精讲](https://programmercarl.com/00
|
||||
|
||||
其中主要**理解j=next[x]这一步最为关键!**
|
||||
|
||||
# 总结
|
||||
## 总结
|
||||
|
||||
字符串类类型的题目,往往想法比较简单,但是实现起来并不容易,复杂的字符串题目非常考验对代码的掌控能力。
|
||||
|
||||
@ -128,3 +128,4 @@ KMP算法是字符串查找最重要的算法,但彻底理解KMP并不容易
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
</a>
|
||||
|
||||
|
Reference in New Issue
Block a user