首页 > 试题广场 >

子串计算

[编程题]子串计算
  • 热度指数:9917 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给出一个01字符串(长度不超过100),求其每一个子串出现的次数。

输入描述:
输入包含多行,每行一个字符串。


输出描述:
对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。
示例1

输入

10101

输出

0 2
01 2
1 3
10 2
101 2
s = input()
d = dict()

def f(target: str, s: str):
    for i in range(len(target), len(s)+1):
        if s[i-len(target):i] == target:
            d[target] = d.get(target, 0) + 1


for i in range(len(s)):
    for j in range(i + 1, len(s)):
        if s[i:j] not in d.keys():
            f(s[i:j], s)

ans = sorted(d.items())
for k, v in ans:
    if v > 1:
        print(f'{k} {v}')

发表于 2024-03-18 21:37:49 回复(0)
import sys

s = input()
s_list = [s[i : i + x + 1] for x in range(len(s)) for i in range(len(s) - x)]
dic = {x: s_list.count(x) for x in s_list if s_list.count(x) > 1}
sorted_key=sorted(dic)
for key in sorted_key:
    print('{} {}'.format(key,dic[key]))
编辑于 2024-03-08 19:58:30 回复(0)