输入一串字符,找到相同且最长的字符串
2016-06-25 22:51
183 查看
输入一行字符串,找出其中出现长度最长的字符串,输出它及其首字符的位置,例如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;
}
步骤: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;
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/25/807cf68f7d2f5c0f1667ed0b9d84f022.png)
相关文章推荐
- DICOM:由fo-dicom库解析DICOM文件引申出来的……
- 一个例子解释“数组名"的含义
- java如何对map进行排序详解
- 转:图片延迟加载(lazyload)的实现原理
- 数据预处理系列:(二)创建试验样本数据
- 【Database】查询语句语法浅析
- 打字感想
- testbench简单范例
- testbench简单范例
- 课堂随笔(php面向对象二)
- tiny4412sdk 1506学习笔记1
- postgresql----LIKE和SIMILAR TO
- Ajax基础
- Docker―网络模式
- dfdsfsdafasdf
- hibernate——manytoone(单向)
- 弹飞绵羊
- csdn可能待改进点之28------>手机上csdn的同步需要好久啊?
- delphi制作资源文件(一)一个A.exe释放出B.exe
- VELT-0.2.8对STM32开发的支持(3):启动代码