找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1630|回复: 3

[求助] 小白求助:重复子字符串

1

主题

1

帖子

1

积分

贫民

积分
1
s1mple 发表于 2021-10-30 20:00:12 | 显示全部楼层 |阅读模式
给定一个字符串 s,判断它是否由它的子串重复多次构成。如果由子串重复多次构成,输出子串,否则输出整个字符串。


输入:'abcabc'
输出:'abc'


输入:'abefd'
输出:'abefd'

输入:''
输出:''


救救孩子

回复

使用道具 举报

1

主题

9

帖子

9

积分

贫民

积分
9
天降天使 发表于 2021-11-4 12:56:36 | 显示全部楼层
本帖最后由 天降天使 于 2021-11-4 14:16 编辑

输入''得到‘’,我做的是不输入直接回车则输出''
我的思路是:
1、输入的字符去重,得到唯一字符串,如aabaab得到ab,abcabd得到abcd
2、遍历得到的唯一字符串与输入的字符串已经遍历过之后的项开始比较,相同则记录(因为如aabaab去重后得到ab,比较时要得到aab才对),得到基础字符串
3、输入的字符串替换掉基础字符串,如果替换后是空值,那么输出基础字符串,否则输出输入的字符串inp = input('请输入字符:')
if inp:                             # 判断是否输入了内容
    unique = ''
    for i in inp:                   # 按顺序去重,不能用集合,否则不能保留原来的顺序
        if i not in unique:
            unique += i
    if len(unique) == 1:        # 如果重复的内容只是一个字符,那就是全重复值如aaa
        print(unique)
    else:
        base_str = ''
        for u in unique:        # 从输入的字符串开头开始找是否和唯一的值相等,相等则记录
            for i in inp[len(base_str):]:
                if i == u:
                    base_str += i
                else:
                    break
        if inp.replace(base_str, ''):
            print(inp)
        else:
            print(base_str)
else:
    print("\'\'")

回复 支持 反对

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
jcodnsuixnbwioe 发表于 2021-11-7 19:58:59 | 显示全部楼层
天降天使 发表于 2021-11-4 12:56
输入''得到‘’,我做的是不输入直接回车则输出''
我的思路是:
1、输入的字符去重,得到唯一字符串,如aaba ...

好象和他的最初意思不是一个了
回复 支持 反对

使用道具 举报

1

主题

9

帖子

9

积分

贫民

积分
9
天降天使 发表于 2021-11-10 17:06:16 | 显示全部楼层
jcodnsuixnbwioe 发表于 2021-11-7 19:58
好象和他的最初意思不是一个了

应该是一样的,按他的例子输入是得到同样的结果,除了空
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表