字符串系列第一弹
Table of Contents
一、Java 字符串介绍
String、StringBuilder、StringBuffer 要用熟练,这里再总结一下。
字符串处理有很多的库函数,要掌握这些函数的底层实现大致过程。
StringBuffer 和 StringBuilder
相同点:两个类的方法是一致的;都是存储字元的容器。在使用上几乎一样。
不同点:
- StringBuffer 是线程安全的,效率低;Stringbuilder是线程不安全的,效率高。在单线程程序里推荐使用,比如leetcode 做题时。
- StringBuffer 是jdk1.0出现的,StringBuilder 是jdk1.5 出现的。
1.1 String 常用方法
-
字符与字符串
1 2 3 4 5
-
字节与字符串
-
字符串比较
1 2 3
-
字符串查找
1 2 3 4
-
字符串截取
-
字符串替换
-
字符串拆分
-
其他操作方法
1.2 StringBuilder 常用方法
-
构造方法
1 2 3
-
增加
1 2 3
-
删除
1 2 3
-
修改
1 2 3 4 5 6 7
-
检查
1 2 3 4 5 6 7
二、反转字符串
这个题目就是双指针的用法,注意交换数字的技巧。
344. 反转字符串
|
541. 反转字符串 II
-
利用 StringBuilder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
-
利用 char[]
更容易理解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
151. 翻转字符串里的单词
自己遍历,不利用split
|
还有的常规做法就是
- 去除首尾以及中间多余空格
- 反转整个字符串
- 反转单个单词
剑指 Offer 58 - II. 左旋转字符串
三次reverse就可以。
三、替换空格
剑指 Offer 05. 替换空格
利用原地的那种来实现,双指针。还可以用库函数。
四、字符串匹配
28. 实现 strStr()
-
KMP 解法
见KMP 算法理解,贴一下代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
459. 重复的子字符串
|
10. 正则表达式匹配
-
递归版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
-
迭代版本
-
动态规划
Read other posts