网易首页 > 网易号 > 正文 申请入驻

2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个

0
分享至

2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数 k。

定义一个“美丽下标”,当满足以下条件时:

1.找到字符串 a 在字符串 s 中的位置,且该位置范围为 0 <= i <= s.length - a.length。

2.找到字符串 b 在字符串 s 中的位置,且该位置范围为 0 <= j <= s.length - b.length。

3.两个字符串的匹配位置之差的绝对值不超过 k。

需要按照美丽下标的大小升序排列,然后以数组的形式返回这些下标。

输入:s = "isawsquirrelnearmysquirrelhouseohmy", a = "my", b = "squirrel", k = 15。

输出:[16,33]。

答案2024-05-18:

chatgpt

题目来自leetcode3008。

大体步骤如下:

1.定义了 main 函数,其中给定了字符串 s、子字符串 a 和 b,以及整数 k。

2.在 main 函数中调用 beautifulIndices 函数,并输出结果。

3.beautifulIndices 函数中调用了 kmp 函数来找到字符串 a 和 b 在字符串 s 中的所有可能位置。

4.在 kmp 函数中,首先构建了 pattern 的前缀函数 pi。

5.对于子串 a,通过 KMP 算法寻找所有匹配的位置,将它们存储在 posA 中。

6.对于子串 b,同样使用 KMP 算法来寻找所有匹配的位置,将它们存储在 posB 中。

7.然后遍历 posA 中的每个位置 i,在 posB 中查找满足条件的位置 j 和 k,更新 ans。

8.将找到的美丽下标按照升序排列,并以数组形式返回。

总的时间复杂度:

  • •KMP 算法的时间复杂度为 O(n + m),其中 n 是字符串长度,m 是模式串长度。在该问题中,分别对两个子串执行 KMP 搜索,因此总的时间复杂度为 O(n + m) + O(n + m) = O(n + m)。
  • •遍历 posA 和 posB 的时间复杂度为 O(n) + O(n) = O(n),其中 n 是字符串长度。

总的额外空间复杂度:

  • •在 KMP 函数中,构建了模式串的前缀函数 pi,使用了额外的空间来存储 pi 数组,其大小等于模式串的长度,因此空间复杂度为 O(m)。
  • •在 beautifulIndices 函数中,存储了所有匹配的位置,即创建了 posA 和 posB 数组来存储这些位置,空间复杂度为 O(n)。
  • •因此,总的额外空间复杂度为 O(m) + O(n)。

综上所述,总的时间复杂度为 O(n + m),总的额外空间复杂度为 O(m) + O(n)。

Go完整代码如下:

packagemain
import"fmt"
funcbeautifulIndices(s,a,bstring,kint)(ans[]int){
posA:=kmp(s,a)
posB:=kmp(s,b)
j,m:=0,len(posB)
for_,i:=rangeposA{
forjj++
}
ifjans=append(ans,i)
}
}
return
}
funckmp(text,patternstring)(pos[]int){
m:=len(pattern)
pi:=make([]int,m)
cnt:=0
fori:=1;iv:=pattern[i]
forcnt>0&&pattern[cnt]!=v{
cnt=pi[cnt-1]
}
ifpattern[cnt]==v{
cnt++
}
pi[i]=cnt
}
cnt=0
fori,v:=rangetext{
forcnt>0&&pattern[cnt]!=byte(v){
cnt=pi[cnt-1]
}
ifpattern[cnt]==byte(v){
cnt++
}
ifcnt==m{
pos=append(pos,i-m+1)
cnt=pi[cnt-1]
}
}
return
}
funcmain(){
s:="isawsquirrelnearmysquirrelhouseohmy"
a:="my"
b:="squirrel"
k:=15
result:=beautifulIndices(s,a,b,k)
fmt.Println("Result:",result)
}



Python完整代码如下:

#-*-coding:utf-8-*-
defbeautiful_indices(s,a,b,k):
defkmp(text,pattern):
m=len(pattern)
pi=[0]*m
cnt=0
foriinrange(1,m):
v=pattern[i]
whilecnt>0andpattern[cnt]!=v:
cnt=pi[cnt-1]
ifpattern[cnt]==v:
cnt+=1
pi[i]=cnt
pos=[]
cnt=0
fori,vinenumerate(text):
whilecnt>0andpattern[cnt]!=v:
cnt=pi[cnt-1]
ifpattern[cnt]==v:
cnt+=1
ifcnt==m:
pos.append(i-m+1)
cnt=pi[cnt-1]
returnpos
posA=kmp(s,a)
posB=kmp(s,b)
ans=[]
j,m=0,len(posB)
foriinposA:
whilejj+=1
ifjans.append(i)
returnans
s="isawsquirrelnearmysquirrelhouseohmy"
a="my"
b="squirrel"
k=15
result=beautiful_indices(s,a,b,k)
print("Result:",result)



声明:个人原创,仅供参考

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
男上司暗恋我,我们在一起这天,我得到了前所未有的满足

男上司暗恋我,我们在一起这天,我得到了前所未有的满足

沧海已桑田
2023-05-10 14:40:14
很好奇这些国家都是怎么生活的

很好奇这些国家都是怎么生活的

悠闲葡萄
2024-06-19 16:10:31
冯提莫健身直播走光!直播间当场被封禁,网友嘲讽:“垫大欺客”

冯提莫健身直播走光!直播间当场被封禁,网友嘲讽:“垫大欺客”

木子爱娱乐大号
2024-06-12 16:33:27
第一次性生活有多痛?进不去怎么办

第一次性生活有多痛?进不去怎么办

喜马拉雅主播暮霭
2024-06-12 09:53:49
美洲杯夺冠概率:阿根廷31%领跑,巴西第二,乌拉圭第三

美洲杯夺冠概率:阿根廷31%领跑,巴西第二,乌拉圭第三

懂球帝
2024-06-20 04:24:07
一棵树200万?!园区“旺墩路一哥”交付实景曝光!全铝板外立面+星空顶地下车库…

一棵树200万?!园区“旺墩路一哥”交付实景曝光!全铝板外立面+星空顶地下车库…

居者
2024-06-19 18:03:26
南医大处罚教师后续:举报者身份被扒,上课画面曝光,官方新回应

南医大处罚教师后续:举报者身份被扒,上课画面曝光,官方新回应

凯旋学长
2024-06-17 18:02:40
妻子2次和光棍偷情,2017年光棍嫌她有丈夫,觉得被玩弄了杀死她

妻子2次和光棍偷情,2017年光棍嫌她有丈夫,觉得被玩弄了杀死她

汉史趣闻
2024-06-19 11:12:42
990亿!销量第一!华为问界暴击BBA

990亿!销量第一!华为问界暴击BBA

财经三分钟pro
2024-06-19 18:41:56
单位里退休的风向变了

单位里退休的风向变了

悠闲葡萄
2024-06-19 12:37:47
叫嚣外交豁免权女子认怂道歉,多名律师发声,明年退休或晚节不保

叫嚣外交豁免权女子认怂道歉,多名律师发声,明年退休或晚节不保

娱乐帝皇丸
2024-06-19 13:31:36
DNF手游与安卓渠道开撕,腾讯也不忍了

DNF手游与安卓渠道开撕,腾讯也不忍了

蓝鲸财经
2024-06-19 20:16:28
小S又曝大S劲爆旧料:去奢侈品购物被店员无视,一怒之下买了两个

小S又曝大S劲爆旧料:去奢侈品购物被店员无视,一怒之下买了两个

小徐讲八卦
2024-06-19 07:30:47
厄瓜多尔取消对中国游客免签,外交部回应

厄瓜多尔取消对中国游客免签,外交部回应

华人生活网
2024-06-19 05:22:00
陈晓评论区沦陷!网友劝他别做渣男,陈妍希最新动态还戴着婚戒

陈晓评论区沦陷!网友劝他别做渣男,陈妍希最新动态还戴着婚戒

萌神木木
2024-06-19 16:32:25
惨烈!俄军装甲纵队发起疯狂猛攻,遭半路伏击惨败横尸遍野

惨烈!俄军装甲纵队发起疯狂猛攻,遭半路伏击惨败横尸遍野

亡海中的彼岸花
2024-06-19 00:55:02
汪东兴贴身保护毛主席30年,晚年懊悔:当年瞎了眼,让主席用这人

汪东兴贴身保护毛主席30年,晚年懊悔:当年瞎了眼,让主席用这人

北风那个吹呀吹
2024-06-19 18:46:36
PS香港宣传《黑神话》配文:不是中美合拍,而是国人自研

PS香港宣传《黑神话》配文:不是中美合拍,而是国人自研

懂球帝
2024-06-19 11:20:10
就在刚刚,中方正式下达“逐客令”,要求这国4天内必须离华!

就在刚刚,中方正式下达“逐客令”,要求这国4天内必须离华!

小乐讲故事
2023-05-17 09:52:08
女儿中考亲妈后妈共同来接!网友:看了颜值后,丈夫才是人生赢家

女儿中考亲妈后妈共同来接!网友:看了颜值后,丈夫才是人生赢家

垛垛糖
2024-06-18 12:47:49
2024-06-20 11:04:49
moonfdd
moonfdd
福大大架构师每日一题
427文章数 7关注度
往期回顾 全部

科技要闻

苹果回应AI仅限iPhone15Pro:不是为卖新机

头条要闻

环球:《我的阿勒泰》火到国外 西方媒体破防了

头条要闻

环球:《我的阿勒泰》火到国外 西方媒体破防了

体育要闻

绿军的真老大,开始备战下赛季了

娱乐要闻

黄一鸣“杀疯了” 直播间卖大葱养孩子

财经要闻

茅台大跌,谁的锅?

汽车要闻

售价11.79-14.39万元 新一代哈弗H6正式上市

态度原创

手机
亲子
时尚
本地
房产

手机要闻

Canalys:预计今年 5G 智能手机出货量占比将增加到 67%

亲子要闻

网友路边看见的双胞胎宝宝,在车里乖乖等待爸妈回来

“T恤”作为夏季的基础款,竟然有这么多种穿法

本地新闻

中式沙拉宇宙的天花板,它必须有姓名

房产要闻

海棠湾!一所重量级国际学校真的来了!

无障碍浏览 进入关怀版