字符串题做了将近一个月,博客上整理的20道和笔记中整理的十几道,接近40道了,不总结一下整体的思路,大脑是一片混乱的。
从最开始的实现strStr()开始,到最后的子序列相关问题,总结字符串题主要分为以下几种类型:
- 基础题——考查对字符串类相关的操作,其中重点掌握切片、连接和内置方法。
- 子串题——子串题尽是困难题,但是同时也是非常经典的一类题目,需要好好掌握。常用的方法和技巧有滑动窗口、Python Counter法、分治法
- 回文串题——回文串是一种特殊的字符串,它们反正顺序相同,所以围绕这种特点可以出很多题,从最基础的判断回文串、最短最长回文串到困难难度的分割回文串,属实精彩。常用奇淫巧技:动态规划、直觉(caodan)、回文串专属方法、分割=分治。
- 括号题——括号题又是另外一种类型,利用括号成对出现而特点出题,各种经典题目解法,比如类似回文串的判断,括号题可以出判断有效括号,最长有效括号,还有一些添加括号的相关困难题,和回文串一样,属实精彩。常用的方法:栈、分治-递归、最长××=动态规划
- 子序列题——子序列类似子串,只不过子串是紧密连接的字符串子集。因此,这种基于这种特点出的相关题也是属实精彩。动态规划作为一种常备方法。
总结:从上面标黑的关键词也能看出来,求解字符串相关问题是,首先考虑的方法就是分治和动态规划,另外对编程语言的字符串相关的操作和内置方法也需要具有一定程度的熟练才能更好的帮助实现自己的思路。