leecode/thinkings/string-problems.md
2020-05-22 18:17:19 +08:00

49 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 字符串问题
字符串问题有很多从简单的实现substr识别回文到复杂一点的公共子串/子序列。其实字符串本质上也是字符数组,因此
很多数据的思想和方法也可以用在字符串问题上,并且在有些时候能够发挥很好的作用。
专门处理字符串的算法也很多比如trie马拉车算法游程编码huffman树等等。
## 实现字符串的一些原生方法
这类题目应该是最直接的题目了,题目歧义比较小, 难度也是相对较小,因此用于电面等形式也是不错的。
- [28.implement-str-str](https://leetcode.com/problems/implement-strstr/)
- [344.reverse-string](../backlog/344.reverse-string.js)
## 回文
回文串就是一个正读和反读都一样的字符串比如“level”或者“noon”等等就是回文串。
判断是否回文的通用方法是首尾双指针具体可以见下方125号题目。 判断最长回文的思路主要是两个字"扩展"
如果可以充分利用回文的特点,则可以减少很多无谓的计算,典型的是《马拉车算法》。
### 相关问题
- [5.longest-palindromic-substring](../problems/5.longest-palindromic-substring.md)
- [125.valid-palindrome](../problems/125.valid-palindrome.md)
- [131.palindrome-partitioning](../problems/131.palindrome-partitioning.md)
- [shortest-palindrome](https://leetcode.com/problems/shortest-palindrome/)
- [516.longest-palindromic-subsequence](../problems/516.longest-palindromic-subsequence.md)
## 前缀问题
前缀树用来处理这种问题是最符合直觉的,但是它也有缺点,比如公共前缀很少的情况下,比较费内存。
### 相关题目
-[14.longest-common-prefix](../14.longest-common-prefix.js)
-[208.implement-trie-prefix-tree](../problems/208.implement-trie-prefix-tree.md)
## 其他问题
- [139.word-break](../problems/139.word-break.md)