常见算法基础题思路简析(六)-字符串篇
标签: algorithms
本文对和 字符串 有关的常见算法基础题思路分类进行分析和总结,并以 Java 为例,适当指出需要注意的编程细节
- 相关题目和代码在 GitHub: https://github.com/brianway/algorithms-learning
- 题目见
com.brianway.learning.algorithms.lectures.string
包
最长无重复字符子串
题目见 DistinctSubstring
思路:对于每个字符,向左延伸找无重复子串,要知道该字符(记为 s[i]
)上次在哪个位置出现过,还要知道之前其他字符中出现过重复且最近一次出现重复的那个位置 pre,则以 s[i]
结尾的向左最长无重复的长度为: s[i]
上次出现位置和 pre 中较大者到现在 s[i]
的距离。
//例子1
i:0 1 2 3 4 5
s:b a c b a d
i=4 => s[4] = a, pre = 0(b 重复了),map[a] = 1(a 上次出现在 i=