1.介绍
在笔试面试中,字符串类型题目相当广泛,原因有一下几点:
1.字符串可以看做是字符类型的数组,与数组的排序、查找、调整有关
2.很多其他类型的题目最终可能会转化成字符串类型的题目
2.需要掌握的几个概念
1.回文
2.子串(连续)
3.子序列(不连续)
4.前缀树(Trie树)
5.后缀树和后缀数组
6.匹配
7.字典序
3.字符串题目常见类型
1.规则判断
判断字符串是否符合整数规则
判断字符串是否符合浮点数规则
判断字符串是否符合回文字符串规则
2.数字运算
int和long类型表达的整数范围有限,所以经常使用字符串来实现大整数,实现与大整数相关的运算
3.与数组操作有关的类型
数组有关的调整、排序等操作
快速排序的划分过程需要掌握和改写
4.字符计数
解决方案:哈希表、固定长度的数组(c/c++ 256长度、java中65536长度)
相关其他问题:滑动窗口问题、寻找无重复字符子串问题、计算变位词问题等
5.动态规划问题
最长公共子串
最长公共子序列
最长回文子串
最长回文子序列等
6.搜索类型
宽度优先搜索
深度优先搜索
比如:给定两个被打乱的字符串A和B,每次只能交换一次字符,如何把A变成B,打印这种变换轨迹
7.高级算法和数据结构解决的问题
Manacher算法解决最长回文子串问题
KMP算法解决字符串匹配问题
前缀树结构
后缀树和后缀数组
通常面试中很少出现,因为当场事先比较复杂