标签:
输入一行字符串,找出其中出现长度最长的字符串,输出它及其首字符的位置,例如yyabcdajcabceg,输出abc和3
步骤:1 两个循环获取字符串子串,外层循环确定长度,内存循环确定子串的首字符位置,长度由大到小变化
2 分别利用正向查找和反向查找的方式,查找子串的位置,当两种方式查找的位置不同时,则表示为最长的重复,此时按要求输出
3 否则遍历完,没有重复子串,则return 0
int main()
{
string str = "yyabcdabjcabceg";
for (int i = str.length() - 1; i > 1; i--)//长度缩短
{
for (int j = 0; j < str.length(); j++)
{
if (j + i <= str.length())
{
size_t t = 0;
size_t num = 0;
string tmp = str.substr(j, i);//取出字串
t = str.find(tmp);
num = str.rfind(tmp);
if (t != num)
{
cout << tmp << " " << t + 1;
cin.get();
return 0;
}
}
}
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/ranranblog/p/5617084.html