给定字符串s返回含有连续两个s作为子串的最短字符串的一种简单解法——Python版

版权声明:本文为博主原创文章,未经允许不得转载 https://blog.csdn.net/sinat_32582203/article/details/82383869

题目描述:

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:len(string)]:
            repeatLength = front
    return string + string[repeatLength:len(string)]

# 几个测试用例
print getShortestStr("aba")
print getShortestStr("abracadabra")
print getShortestStr("a")
print getShortestStr("")
print getShortestStr(" ")
print getShortestStr("aaa")
print getShortestStr("arbaarbaarba")

猜你喜欢

转载自blog.csdn.net/sinat_32582203/article/details/82383869