shutu020917


私信TA

用户名:uq_55705388570

访问量:772

签 名:

等  级
排  名 4956
经  验 1547
参赛次数 0
文章发表 12
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:
从第一位开始遍历,一个pase一组进行对比,对比成功(即出现重复子串),count+1。

遍历至最后一位break,同时计入count数、本命子串位置及长度,方便后续对比输出。
注意事项:

参考代码:

## 字串统计
##给定一个长度为n的字符串S,还有一个数字L,
##统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),
##如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的
L=int(input())
S=input()
string=[]
## 标志位
flag=1
## 计数
count=0
## 字符出现字数
num=[]
## 存放字符 位置、长度
goal=[]
## 找出需要的字符串序列号
goal_num=[]
## 长度一样的目标
## 最后目标序列号、长度
last_num=0
last_len=0

def founc_one():
    global string,flag,count
    ##for i in range(1):
    ## 暴力法,遇见越界问题直接break 同时标志位标零
    for pase in range(L,len(S)):
        for i in range((len(S))):
            ## 将L个字符预先储存
            for j in range(i,i+pase):
                if j>len(S)-1:
                    flag=0
                    break
                else:
                    string.append(S[j])
            ## 从i开始逐一对比
            for k in range(i,len(S)):
                for m in range(pase):
                    if k+m>len(S)-1:
                        flag=0
                        break
                    else:
                        if S[k+m]!=string[m]:
                            flag=0
                ## L长的字符对比成功
                if flag==1:
                    count+=1
                flag=1
            num.append(count)
            goal.append([i,pase])
            string=[]
            count=0

founc_one()
## 找到出现最多的字符串
for i in range(len(num)):
    if num[i]==max(num):
        goal_num.append(i)

## 找到最长的字符串
last_num=goal[goal_num[0]][0]
last_len=goal[goal_num[0]][1]
for i in range(len(goal_num)):
    if goal[goal_num[i]][1]>last_len:
        last_num=goal[goal_num[i]][0]
        last_len=goal[goal_num[i]][1]

for r in range(last_num,last_num+last_len):
    print(S[r],end="")


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区