最短连续子串

题目描述:

给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。注意两个s可能有重叠部分。例如,“ababa"含有两个"aba”。

输入描述:

输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母。

输出描述:

输出一个字符串,即含有连续两个s作为子串的最短字符串。

示例:

输入

abracadabra

输出

abracadabracada
C++代码

#include
#include
using namespace std;
string getShortestLength(string str)
{
	int len=str.size();
	if(len==0)
		return "";
	if(len==1)
	{
		return str+str;
	}
	string s;
	int end=0;
    for(int i=1;i>str)
	{
		string out=getShortestLength(str);
		cout<

python代码:

def getShortestStr(string):#最长首尾重叠部分
    if len(string)==0:
        return None
    if len(string)==1:
        return string*2
    repeatLength=0
    for front in range(1,len(string)):
        if string[:front]==string[len(string)-front:]:
            repreatLength=front
    return string+string[repeatLength:]
if __name__=='__main__':
    getShortestStr("abababa")

你可能感兴趣的:(笔试资料,python,C++)