题目描述:
1. 给定你一个字符串s。请返回含有连续两个s作为子串的最短字符串。请注意两个s可能会有重叠部分。
输入:
输入一个字符串s。s含有1到50个字符(其中包括1和50),s中每个字符都是一个小写字母(从a到z)
输出:
返回含有连续两个s作为子串的最短字符串
举例:
s = "aba",返回"ababa"。
思路:
寻找最长首尾重叠部分即可,例如:
abracadabra
abracadabra
最长首尾重叠部分为abra,函数返回“abracadabra”+“cadabra”即可。
代码实现:
def getShortestStr(string):
if len(string) == 0:
return None
if len(string) == 1:
return string*2
repeatLength = 0
for front in xrange(1, len(string)):
if string[:front] == string[len(string) - front:]:
repeatLength = front
return string + string[repeatLength:]
# 几个测试用例
print getShortestStr("aba")
print getShortestStr("abracadabra")
print getShortestStr("a")
print getShortestStr("")
print getShortestStr(" ")
print getShortestStr("aaa")
print getShortestStr("arbaarbaarba")