分析问题:
假设存在一个长度为 N 的子串 S 出现的次数最多。那么它具有哪些特点呢?
- S 的任一子串的出现次数不少于 S 的出现次数
- S 中不会出现重复的子串字符
- S 中不会出现重复的字符
- 组成 S 的每一个字符、每一个子串的出现次数都和 S 一样
解决问题:
扫描输入的每个字符,记录每个字符 C 的出现次数,以及对该字符的后续字符 NC 的关联次数。
扫描统计数据中每个字符的出现次数,找出最大值 M。
再次扫描统计数据,把出现次数满足 M 的字符 C 放入集合 RS 中。
如果 C 存在同样满足 M 的后续字符 NC,则把该 NC 作为 C 的关联数据保存至 RS 中。
至此,集合 RS 已经唯一确定了满足最大出现次数的所有字符串。
from:http://blog.youkuaiyun.com/rushman/article/details/2325135