字符串是面试中的高频题目,很多面试题目都会或多会少的考察字符串的有关内容,本篇文章是总结整合了剑指offer中的字符串相关的面试题,详细内容如下:
1. 剑指offer第5题:替换空格
这道题的题目描述和代码实现见下图:
这道题目有三种解法,其中第1种用到了replace函数,只需一行代码就完成了实现,显然面试中这种方法是不可行了;第2种方法用到了python中正则表达式, 导入了re模块,这也只是提供了一种实现方式,面试的时候这种方法恐怕也是不可取的;第3种方法就是比较不错的方法了,以输入字符串'We are happy'为例,解题思路如下:
有关合并字符串和合并数组的题目,为了提高计算效率,一般都是从尾到头进行操作,然后对数组或字符串进行移动复制等操作。
2. 剑指offer第19题:正则表达式匹配
这道题的题目描述和代码实现如下:
这道题的解题思路已经说的比较详细,接下来是关于string和pattern都不为空时的图解分析,如下:
3. 剑指offer第20题:表示数值的字符串
这道题的题目描述和解题思路如下:
这道题的解题思路已经说的比较详细,所以不再进行阐述。
4. 剑指offer第50题:第一个只出现一次的字符
这道题的题目描述和代码实现见下图:
这道题的变形题目比较多,这种问题都可以使用字典(或者哈希表)来进行处理,有关各个题的解题思路上面说的比较清晰,不再进行赘述。
5. 剑指offer第38题:字符串的排列
这道题目的题目描述和代码实现如下:
上面的两道题目都用到了递归的思想,关于第一题的示意图如下:
关于变形题目的示意图如下: