2021-09-07 23:59:20 +08:00
|
|
|
# 字符串
|
2015-12-01 11:15:39 +08:00
|
|
|
|
|
|
|
|
字符串在计算机中的应用非常广泛,这里讨论有关字符串的最重要的算法:
|
|
|
|
|
|
|
|
|
|
* 排序
|
|
|
|
|
* 查找
|
2017-03-21 11:32:58 +08:00
|
|
|
* 单词查找树
|
|
|
|
|
* 子串查找
|
2017-03-21 11:35:51 +08:00
|
|
|
* 正则表达式:正则表达式是模式匹配的基础,是一个一般化了的子字符串的查找问题,也是搜索工具grep的核心。
|
2017-03-21 11:32:58 +08:00
|
|
|
* 模式匹配
|
|
|
|
|
* grep
|
2015-12-01 11:15:39 +08:00
|
|
|
* 数据压缩
|
2017-03-21 11:32:58 +08:00
|
|
|
* 赫夫曼树
|
|
|
|
|
* 游程编码
|
2015-12-01 11:15:39 +08:00
|
|
|
|
|
|
|
|
|
2021-09-07 23:59:20 +08:00
|
|
|
[Java中 String实现 参考这里](java%20String.md)
|
2021-08-29 22:40:12 +08:00
|
|
|
|
|
|
|
|
## 查找
|
|
|
|
|
|
|
|
|
|
* KMP
|
|
|
|
|
* BM
|
|
|
|
|
|
|
|
|
|
|
2021-09-13 14:43:50 +08:00
|
|
|
## 滑动窗口
|
|
|
|
|
|
|
|
|
|
|
2021-11-17 01:32:45 +08:00
|
|
|
使用滑动窗口解决字符串子串问题,代码框架
|
2021-09-13 14:43:50 +08:00
|
|
|
```
|
|
|
|
|
int left = 0, right = 0;
|
|
|
|
|
|
|
|
|
|
while (right < s.size()) {
|
|
|
|
|
// 增大窗口
|
|
|
|
|
window.add(s[right]);
|
|
|
|
|
right++;
|
|
|
|
|
|
|
|
|
|
while (window needs shrink) {
|
|
|
|
|
// 缩小窗口
|
|
|
|
|
window.remove(s[left]);
|
|
|
|
|
left++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-01 12:19:20 +08:00
|
|
|
## 参考
|
2015-12-01 11:15:39 +08:00
|
|
|
|
2015-12-01 12:19:20 +08:00
|
|
|
《Algorithms》
|
2015-12-01 11:15:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|