面试题[后缀数组]: 最长重复子串
来源:互联网 发布:mac os x 10.7 .2 iso 编辑:程序博客网 时间:2024/06/03 22:38
题目:给定一个字符串,求出最长重复子串。
这个题目可以用后缀数组来解:对后缀数组排好序,这样重复的子串就在相邻的后缀中找就可以了。我的C++代码实现如下:
class Solution{public: string LongestRepeatingSubstring(string str) { size_t len = str.size(); vector<string> SuffixArray(len); for (size_t i = 0; i < len; ++i) SuffixArray[i] = str.substr(i); sort(SuffixArray.begin(), SuffixArray.end()); size_t maxLen = 0, idx = 0; for (size_t i = 0; i < len - 1; ++i) { size_t curLen = LongestPrefix(SuffixArray[i], SuffixArray[i + 1]); if (curLen > maxLen) { maxLen = curLen; idx = i; } } return SuffixArray[idx].substr(0, maxLen); }private: size_t LongestPrefix(string str1, string str2) { size_t len = min(str1.size(), str2.size()); for (size_t i = 0; i < len; ++i) if (str1[i] != str2[i]) return i; return len; }};
0 0
- [各种面试题] 最长重复子串-后缀数组
- 面试题[后缀数组]: 最长重复子串
- 最长重复子串(后缀数组)
- 后缀数组求最长重复子串
- 后缀数组求最长重复子串
- 后缀数组:最长重复子串 (marked)
- 后缀数组求最长重复子串
- 后缀数组求最长重复子串
- 后缀数组之最长重复子串
- 最长重复子串—后缀数组
- 后缀数组求最长重复子串
- 后缀数组求最长重复子串
- 后缀数组求最长重复子串
- 最长重复子串(后缀数组思想)
- 后缀数组求最长重复子串
- 利用后缀数组求字符串的最长重复子串
- 后缀数组 不重叠最长重复子串 POJ 1743
- POJ 1743 Musical Theme(后缀数组,最长重复子串)
- IBM黑衣小组
- Ubantu修改环境变量
- sscanf()总结
- String、StringBuffer、StringBuilder的区别
- thinkphp 邮件发送
- 面试题[后缀数组]: 最长重复子串
- WildCardQuery通配符查找
- 初识Dubbo 系列之1-Dubbo是什么
- 三目运算符“?:”省略中间操作数的分析
- POJ 2429 GCD & LCM Inverse (大整数素性测试与因式分解)
- Learn UML with JUDE
- 调研HEVC中RC的方法分类
- dede织梦后台给栏目添加上缩略图
- [省选前题目整理][BZOJ 1087][SCOI2005]互不侵犯King