首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
在走神的马来熊很紧张
香港大学 Java
发布于安徽
关注
已关注
取消关注
@香蕉苹果葡萄梨:
中行软开 11.3编程测评第4题 题解
题干:给定一串小写字符,每一个字符都可以转换成字母表中相邻的其他字符,但是a、z之间无法直接转换,求最少转换次数,使该字符串不存在两个辅音字母相邻思路:读完题定下的基本认知是,元音字母将字符串分割为多个全为辅音字母的字符串,每一个辅音字符串的转换都是互不相干的独立问题,所以问题简化成,对一个全为辅音字母的字符串,求最少转换次数,使该字符串不存在两个辅音字母相邻首先想到的思路就是动态规划,但是因为前三题过于简单,所以考虑寻找更简单的解法,尝试了135...246...这种交替转换,提交上去a了50%,想到对于"zbbz"的样例,应该是2、3位直接转换成a是最优解,交替转换的思路不可取,于是重新思考动规解法。状态定义:dp1:在第n位转换成元音字母的情况下,前n个字符组成的字符串,满足无连续辅音字母所需转换的最少次数dp2:前n个字符组成的字符串,满足无连续辅音所需转换的最少次数dp2就是待求的问题。状态转移方程:对于dp1,如果第n位变成了元音字母,那么问题就等价于求前n-1个辅音字符串,满足无连续辅音所需转换的最少次数,恰好是dp2[n-1],则dp1=dp2[n-1]+count(n)对于dp2,情况1:如果最优解中第n-1位变成了元音字母,则最优解中第n位一定无需转换,最优解就是dp1[n-1]情况2:如果最优解中第n-1位不变且第n-2位变成了元音字母,则最优解中第n位一定需要转换,最优解是dp1[n-2]+count(n)情况3:最优解中第n-1位不变,且第n-2位不变,这种情况显然不存在,因为出现了连续两个辅音字母状态转移方程如下:// count(n) 是第n个辅音字母转换成元音字母所需转换的最小次数dp1[n] = dp2[n-1] + count(n)dp2[n] = min(dp1[n-1], dp1[n-2]+count(n))状态初始化:dp1[0] = count(0), dp1[1] = count(1)dp2[0] = 0, dp2[1] = min(dp1[0], dp1[1])代码实现:def get_distances() -> dict[str: int]: """求每一个辅音字母转换为元音字母所需的最小转换次数,常数级时间复杂度""" distances = dict() for c in 'abcdefghijklmnopqrstuvwxyz': if c in vowel: continue distances[c] = 26 for v in vowel: distances[c] = min(distances[c], abs(ord(v) - ord(c))) return distancesvowel = {'a', 'e', 'i', 'o', 'u'}dis = get_distances()def main(s: str) -> int: res = 0 seg = '' # 分割出每一个连续的辅音字符串,独立求解,加和得到最终结果 for c in s: if c in vowel: if len(seg) >= 2: res += count(seg) seg = '' continue seg += c if len(seg) >= 2: return res + count(seg) return resdef count(s: str) -> int: dp1 = [0] * len(s) dp2 = [0] * len(s) dp1[0] = dis[s[0]] dp1[1] = dis[s[1]] dp2[1] = min(dp1[0], dp1[1]) for i in range(2, len(s)): # 以下是状态转移方程,可以进行存储优化 dp1[i] = dp2[i-1] + dis[s[i]] dp2[i] = min(dp1[i-1], dp1[i-2] + dis[s[i]]) return dp2[-1]# def count(s: str) -> int:# """存储优化版本"""# a, b = dis[s[0]], dis[s[1]]# c = min(a, b)# for i in range(2, len(s)):# c_new = min(b, a + dis[s[i]])# a, b = b, c + dis[s[i]]# c = c_new# return cprint(main('azbbzabcdabbb'))复杂度:时间复杂度:O(n)空间复杂度:O(n),存储优化版本的复杂度是O(1)
点赞 18
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-28 08:40
中国人民大学 Java
分享B站开发实习生技术面凉经
哔哩哔哩跨平台开发实习生拷打项目:请详细介绍你参与过的与跨平台开发相关的项目,包括项目背景、你的职责以及遇到的挑战和解决方案。数据结构与算法:举例说明你在实际项目中运用过的一种数据结构和算法,并阐述选择它们的原因。现代编程语言:你掌握的 C++、Kotlin、Swift 中,选择一种语言,谈谈它在跨平台开发中的优势和劣势。操作系统原理:简述操作系统的进程和线程的区别,以及在跨平台开发中如何处理多线程问题。计算机网络:解释 HTTP 协议在跨平台移动 App 开发中的应用,以及如何优化网络请求。数据库:在跨平台开发中,如何选择合适的数据库,以及如何处理不同平台数据库的兼容性问题。基础组件研发:如...
查看12道真题和解析
点赞
评论
收藏
分享
08-01 18:30
长春理工大学 Java
26届双非-秋招简历-求佬们拷打
26届java,迷茫了,求大佬们拷打,狠狠拷打。现在真焦虑了
点赞
评论
收藏
分享
06-23 12:08
广州大学 硬件测试
有没有人看看这个简历到底有多差
想找硬件测试实习
小浪_Coding:
找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞
评论
收藏
分享
07-12 17:59
郑州大学 自动化
好像给安排面试的hr惹生气了怎么办
面试汇川,因为学校小学期的原因,导致安排的面试调整了好几次,虽然我姿态很卑微的道歉了,但还是感觉hr生气了。一面过了,二面她约了个时间(当天下午),我说这个时间我在学校安排的实习,能不能往后调整一天(之前因为同样原因调整了两次),当时没说什么。但是后续就渺无音讯了,我发短信也不理我。牛爷爷们怎么办,我总不能因为这样一个原因导致面试没了吧
金俊涛:
话说楼主突然想到,这两天是周末,她是不是不工作啊,所以没回我
点赞
评论
收藏
分享
07-31 17:55
四川农业大学 产品经理
SSP薪资参考
从某求职陪跑处看的,薪资达到这些档位才叫SSP吧
xxxxOxo:
非技术岗吧,技术岗这是白菜了
什么样的背景能拿SSP?
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
2026届拼多多服务端开发工程师笔试
1.4W
2
...
焦虑啥啊,你的人生才刚刚开始
4400
3
...
想把公司炸了!!!
4017
4
...
从字节实习转正失败到拿校招offer|这6个月教会我的事
2772
5
...
PDD8.3算法笔试
2772
6
...
虾皮一面,面试官:不错的小伙子
2685
7
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
2543
8
...
字节转正失败
2175
9
...
Shopee秋招一面凉经
2121
10
...
实习转正无望了😭
2053
创作者周榜
更多
正在热议
更多
#
秋招被确诊为……
#
168209次浏览
817人参与
#
找工作如何保持松弛感?
#
92933次浏览
1137人参与
#
中兴秋招
#
209905次浏览
2314人参与
#
虾皮求职进展汇总
#
252071次浏览
1904人参与
#
你最希望上岸的公司是?
#
136843次浏览
710人参与
#
投格力的你,拿到offer了吗?
#
88342次浏览
586人参与
#
通信和硬件还有转码的必要吗
#
59988次浏览
532人参与
#
秋招投简历越早越好吗
#
70299次浏览
654人参与
#
柠檬微趣工作体验
#
7180次浏览
40人参与
#
26届的你,投了哪些公司?
#
55992次浏览
547人参与
#
你跟室友的关系怎么样?
#
9279次浏览
138人参与
#
简历上的经历如何包装
#
34775次浏览
901人参与
#
滴滴求职进展汇总
#
234601次浏览
2127人参与
#
lastday知无不言
#
62239次浏览
489人参与
#
你遇到最难的面试题目是_
#
18541次浏览
216人参与
#
求职季如何保持心态不崩
#
151122次浏览
1184人参与
#
投递几十家公司,到现在0offer,大家都一样吗
#
251385次浏览
1804人参与
#
机械只有转码才有出路吗?
#
133439次浏览
1606人参与
#
你的秋招第一面感觉怎么样
#
78449次浏览
596人参与
#
什么样的背景能拿SSP?
#
46067次浏览
243人参与
#
在国企工作的人,躺平了吗?
#
348571次浏览
3888人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务