首页 > 试题广场 >

字符串是否由子串拼接

[编程题]字符串是否由子串拼接
  • 热度指数:3547 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的。
例如,"abcabcabc"满足条件,因为它是由"abc"首尾拼接而成的,而"abcab"则不满足条件。

输入描述:
非空字符串


输出描述:
如果字符串满足上述条件,则输出最长的满足条件的的子串;如果不满足条件,则输出false。
示例1

输入

abcabc

输出

abc
strs = input()
str_find = strs
index = strs.index(strs[-1])
while index <= len(strs) / 2:
    str_find = str_find.replace(strs[:index+1], '')
    if len(str_find) == 0:
        print(strs[:index+1])
        exit()
    else:
        index = strs.index(strs[-1], index+1)
        str_find = strs
print('false')
发表于 2020-04-08 15:58:09 回复(0)
## Python版本:
## 遍历字符串,每次取前几个数 作为一个小块
## 如果后面每一小块 与第一小块 相同,就输出这个小块

def my(a):
    flag = 0
    for i in range(0,int(len(a)/2)):
        for j in range(i,len(a),i+1):
            # print(a[:i+1],a[j-i:j+1])
            if a[:i+1] != a[j-i:j+1]:
                break
            # print('j =',j)
            if j == len(a)-1:
                flag = 1
        if flag == 1:
            return a[:i+1]
            break
    if flag == 0:
        return 'false'

a = raw_input()
print(my(a))

发表于 2018-08-29 11:36:52 回复(0)