1.字符串概念
- 用法:
C语言:char a[5] = “asd”;
C++:string a = “asd”; - 区别:
在C语言中,把一个字符串存入一个数组时,也把结束符 ‘\0’存入数组,并以此作为该字符串是否结束的标志。’\0’占一个字节,但是在使用 strlen() 计算长度的时候不会把’\0’算上。
- string、char*、vector的区别
- string:C++ 标准库中的string类,提供了高级的字符串处理方式,是一个对象。
- char*:C风格的字符串,是一个指向字符的指针,指向字符串的起始位置。
- vector:C++ 标准库中的vector类,用于表示一组字符,是一个对象,不如string专业
2.双指针法
-
反转字符串
-
替换空格
-
翻转字符里的单词
3.反转系列
-
反转字符串II
-
翻转字符串里的单词
-
左旋转字符串
4.KMP
KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。
KMP的精髓:前缀表
- 实现strStr()
- 重复的子字符串
5.总结
- 字符串类类型的题目,往往想法比较简单,但是实现起来并不容易。
- 双指针法是字符串处理的常客。
- KMP算法是字符串查找最重要的算法,但彻底理解KMP并不容易。