题目描述
给定一个字符串s, 请计算输出含有连续两个s作为子串的最短字符串。 注意两个s可能有重叠部分。例如,"ababa"含有两个"aba".
输入描述:
输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母.
输出描述:
输出一个字符串,即含有连续两个s作为子串的最短字符串。
示例1
输入
abracadabra
输出
abracadabracadabra
这里是用模拟的思路,先找到匹配的字符串,再做一次拼接,使用C++ string的常用操作。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str, res;
cin >> str;
int index;
for (int i = 1; i < str.size(); i++) {
if (str.substr(0, i) == str.substr(str.size() - i, i))
index = i;
}
//cout << index << endl;
cout << str + str.substr(index, str.size() - index);
}