本文为牛客网学习直通BAT算法精讲,大家可以作为课件使用
字符串笔试面试技巧
特点
1,广泛性
(1),字符串可以看做字符类型的数组与数组排序,查找,调整有关
(2),很多其他类型的面试题可以看做字符串类型的面试题。
注意:用Java实现字符串类型题目是,String是不可修改的,要掌握StringBuffer,StringBuilder类,和toCharArray方法。
2,需要掌握的概念
(1)回文
(2)子串(连续)
(3)子序列(不连续)
(4)前缀树(Trie树)
(5)后缀树和后缀数组
(6)匹配
(7)字典序
3,需要掌握的操作
(1)与数组有关的操作:增删改查
(2)子符的替换)
(3)字符串的旋转
4,字符串题目的常见类型
规则判断:判断字符串是否符合整数,浮点数,回文字符串规则.........
数字运算:int和long类型表达整数范围有限所以经常用字符串实现大整数
与大整数相关的加减乘除操作,需要模拟笔算的过程
与数组操作有关的类型:数组有关的调整,排序等操作;快速排序的划分过程需要掌握和改写
字符计数:哈希表;固定长度的数组,c/c++(256长度),Java(65536长度);滑动窗口问题,寻找无重复字符子串问题,计算变位词问题
5,动态规划问题
最长公共子串;最长公共子序列;最长回文子串;最长回文子序列.......
6, 搜索类型
深度优先搜索;广度优先搜索
例如:str1,str2,str1每次只能变换一个字符,怎么才能完全变成str2,打印变换轨迹;
7,高级算法与数据结构解决的问题
(1)Manacher算法解决最长回文子串问题
(2)KMP算法解决字符串匹配问题
(3)前缀树结构
(4)后缀树和后缀数组
(5)较难,一般较少出现,代码实现较困难
例一:
思路一:
思路二:
例二:
思路:
例三:
思路:
例四:
思路:
例五:
思路:
例六:
思路:
例七:
思路:
例八:
思路: