求一个字符串的最长重复子序列
2015-10-14 11:03
260 查看
分析:求最长重复子序列,即说明要找到一个至少出现两次的最长的子序列。假设某个子序列第二次出现和第一次出现的位置相差i,则i的值为1,2,、、、,str.size()-1,代码如下所示:
string longestRepeatSubstring(const string&str) { int n = str.size(); if (n==0) return NULL; int maxLength = 0; int startIndex = 0; for (int i = 1; i < n; ++i) { int current = 0; for (int j = 0; j < n-i; ++j) { if (str[j] == str[i+j])current++; else current = 0; if (current > maxLength) { maxLength = current; startIndex = j-current+1; } } } if (maxLength > 0) { cout << maxI << endl; return str.substr(startIndex,maxLength); } }
相关文章推荐
- 模拟下载文件还需要多久的测试demo
- Android显示图片崩溃的解决办法
- java多线程总结
- Handler的用法
- java.text.Format体系总结
- AsyncTask详细解析
- 学习笔记——Box六面不同贴图及3dsmax导入unity
- 使用Ant编译项目,旧版SDK用apkbuilder打包,新版SDK没有apkbuilder工具,用sdklib.jar打包apk
- 索引统计信息 示例
- 最全面的 Spring事务管理和AOP切面日志的注入 —aop:pointcut expression解析
- NumberUtil
- Linux sort 命令的用法
- UITableViewCell 高度计算从混沌初始到天地交泰
- 收藏一个IOS好东西的链接
- 一个程序猿坎坷之路,随笔
- leetcode 198 House Robber(难易度:Easy)
- pfx文件解析私钥和公钥
- LT8522X取代MS9282 VGA转HDMI HDMI转VGA VGA和HDMI矩阵
- PHP图像处理之---图片的缩放
- shell基础:使用read、命令行脚本传参实现输入2个整数并计算