日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 求最长重复子串_给定一个字符串,求出其最长的重复子串。

發布時間:2024/7/23 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 求最长重复子串_给定一个字符串,求出其最长的重复子串。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include

#include

#include

#include

using namespace std;

//給定一個字符串,求出其最長的重復子串

//方法一

string lsubstr_1(const string & str)

{

vector 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

{

int j = 0;

while (vs[i][j] == vs[i + 1][j] && j

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

{

m++; k++;

}

temp = str.substr(j, k - j);

if (temp.size()>maxstr.size())

maxstr = temp;

}

return maxstr;

}

void main(void)

{

string test;

//cin >> test;

getline(cin, test);

cout << lsubstr_1(test) << endl;

cout << lsubstr_2(test) << endl;

cout << lsubstr_3(test) << endl;

}

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java 求最长重复子串_给定一个字符串,求出其最长的重复子串。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。