type
status
date
slug
summary
tags
category
icon
password
状态
专注质量
预计(分钟)
开始时间
结束时间
本文部分参考了代码随想录中的内容,如有侵权请谅解。

📝基础理论

字符串的定义

字符串是若干字符组成的有限序列,也可以理解为是一个字符数组,但是很多语言对字符串做了特殊的规定,接下来我来说一说C/C++中的字符串。
在C语言中,把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。
例如这段代码:
在C++中,提供一个string类,string类会提供 size接口,可以用来判断string类字符串是否结束,就不用'\0'来判断是否结束。
例如这段代码:

string和vector<char>的区别

在底层没有区别,只不过我们平时一般都是用 string,因为 string 不但重载了各种算数运算符,同时也提供了大量有关字符串操作的接口。

🤗题型

反转字符串

反转字符串这道题考察了C++中字符串库函数reverse的实现。很容易想到使用双指针,一个从前向后遍历,一个从后向前遍历,使用swap进行不断地交换。
反转字符串2是上一题的进阶版本,我们要学会分析。使用模拟的方法,弄清楚哪些需要反转,哪些不需要即可。

局部反转+整体反转

有些题目通过分析可以发现仍然属于反转字符串的变体。通过先整体反转,再局部反转,或者先局部反转,再整体反转的方法,可以解决这些问题。

KMP

这一类题目需要经常复习,主要解决字符串匹配的问题。相较于暴力解法,KMP的优势在于先构建了一个next数组,记录最长相等前后缀,用于处理当文本串与模式串冲突时需要回退的步数。
具体思路最好还是参考以下视频理解:

总结

至此,我们已经刷了4个模块的题目。接下来的第5个模块是“双指针法”专题,会涉及到很多之前在各个模块已经做过的题目。顺便把之前的内容重新复习一遍。

参考文章

 
💡
Written by Aryue,editted by Notion AI.
 
代码随想录—哈希表代码随想录—双指针
Aryue
Aryue
一个普通的干饭人🍚
公告
type
status
date
slug
summary
tags
category
icon
password
状态
专注质量
预计(分钟)
开始时间
结束时间
📧:578626935@qq.com