首页 > 试题广场 >

两个子串

[编程题]两个子串
  • 热度指数:4986 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个字符串 s , 请计算输出含有连续两个 s 作为子串的最短字符串。 注意两个 s 可能有重叠部分。例如, "ababa" 含有两个 "aba".

数据范围:输入的字符串长度满足 ,且保证只含有小写英文字母

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


输出描述:
输出一个字符串,即含有连续两个s作为子串的最短字符串。
示例1

输入

abracadabra

输出

abracadabracadabra
示例2

输入

a

输出

aa

python解法

遍历一遍,枚举出结果:

string = input()
for i in range(1, len(string) + 1):
    if string.startswith(string[i:]): # 如果后半部分字符串匹配string的起始字符串
        print(string + string[len(string) - i:])
        break
发表于 2019-03-15 22:30:15 回复(0)
s = input()
ans = 0
re = ''
for i in range(1, len(s)):
    if s[i] == s[0]:
        length = len(s) - i
        if s[i:] == s[:length]:
            ans = max(ans, len(s[i:]))
re = s + s[ans:]
print(re)
 
发表于 2018-09-01 20:20:41 回复(1)