01_求给定字符串最长重复子串
来源:互联网 发布:网络骚扰电话怎么举报 编辑:程序博客网 时间:2024/06/08 09:09
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;//给定一个字符串,求出其最长的重复子串//方法一string lsubstr_1(const string & str){ vector<string> vs;for (int i = 0; i < str.size(); i++)vs.push_back(str.substr(i));sort(vs.begin(), vs.end());int max = 0;int flag = 0;for (int i = 0; i <( vs.size()-1); i++){int j = 0;while (vs[i][j] == vs[i + 1][j] && j < vs[i].size() && j < vs[i+1].size())j++;if (j > max){max = j;flag = i;} }return vs[flag].substr(0, max);} //方法二string lsubstr_2(const string & str){string maxstr;for (int i = 0; i < str.size();i++)for (int j = (str.size() - i); j >=1 ; j--){string subs = str.substr(i, j);int front = str.find(subs);int back = str.rfind(subs);if (front != back && subs.size() > maxstr.size())maxstr = subs; }return maxstr;} //方法三string lsubstr_3(const string & str){string maxstr;for (int i = 0; i < str.size(); i++)for (int j = 0; j < i; j++){string temp;int k = j;int m = i;while (str[m] == str[k] && i<str.size() && k<str.size()){m++; k++;}temp = str.substr(j, k - j);if (temp.size()>maxstr.size())maxstr = temp;}return maxstr;} void main(void){string test;getline(cin, test);cout << lsubstr_1(test) << endl;cout << lsubstr_2(test) << endl;cout << lsubstr_3(test) << endl;}
阅读全文
0 0
- 01_求给定字符串最长重复子串
- 求给定字符串重复最长的子串
- 求给定字符串中最长重复子串
- 算法题目二:寻找最长重复子序列(4) 求给定字符串重复最长的子串
- 求给定的某一个字符串中的最长的没有重复字符的子串的长度
- leetcode第三题:求给定字符串中最长无重复子串的长度
- 求字符串的最长重复子串
- 求字符串的最长重复子串
- 求字符串的最长重复子串
- 求字符串中的“最长重复子串”
- 给定一个字符串,输出最长的重复子串
- 给定一个字符串,求出其最长的重复子串
- 给定一个字符串,求出其最长的重复子串。
- 给定一个字符串,求出其最长的重复子串。
- 给定一个字符串,输出最长的重复子串
- 给定一个字符串,求出其最长的重复子串
- 给定一个字符串,求出其最长的重复子串。
- 给定一个字符串。求最长的无重复子字符串长度。
- sendfile:Linux中的"零拷贝"
- PHP内核FastCGI探索之路
- 两个阿里云linux服务器之间传文件
- table表格网页布局的特点和影响
- 关于eclipse和myeclipse用同一个Tomcat时出现的问题
- 01_求给定字符串最长重复子串
- OpenGL实现相机视频NV21格式转RGB格式
- 信息检索导论(第一章) 布尔检索
- C语言实验——图形输出(字符常量练习)
- 工单管理系统
- Linux: vi编辑文件
- 23种设计模式(9):访问者模式
- stm32单片机ISP烧写
- C++11 常用语法