首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-11 23:23
已编辑
深圳大学 Java
招银网络一面
全程大概半小时,没有手撕环节苦苦回忆一番,记得几个印象比较深的问题(1)MySQL binlog主从复制流程,binlog格式(2)MySQL 为什么使用B+树作为索引,而非B树、红黑树(3)MySQL 优化(优化表结构、优化SQL语句、建立索引、使用时避免索引失效、架构上可以考虑使用主从 & 冷热表分离)(4)Redis 实现分布式锁要考虑?(使用原子命令setnx、设置过期时间、给分布式锁设置标识、使用lua脚本释放锁)(5)Redis 和 ZooKeeper 实现分布式锁的异同,适用场景(AP、CP)(6)Redis 集群模式(7)RocketMQ 深挖(broker架构、bro...
查看7道真题和解析
点赞
评论
收藏
分享
10-08 15:05
百度_AIDU-JAVA工程师(准入职员工)
百度内推,百度内推码
💔百度一面 | LRU写太快被问是不是背过?1. 📂 MySQL回表查询说一下你理解的Mysql索引,什么时候回表?思考过为什么这样设计吗?2. 🔄 Update索引变化Update主键索引、辅助索引、联合索引,数据都是怎么变的?3. 📝 UndoLog作用说下UndoLog,只有是不是只有Rollback才会触发UndoLog?4. 🔍 Binlog同步机制Binlog 日志是 Master 推的还是 Salve 来拉的?5. 📦 Redis主从同步Redis 主从同步是怎样的过程?在工作中你们是怎么同步的?6. 💾 AOF文件过大处理Redis的AOF文件过大怎么处理?怎么解...
点赞
评论
收藏
分享
09-21 14:37
福建农林大学 Java
怎么感觉今年秋招好难啊,双非约不到面试。巨巨巨巨巨佬们,我这简历还有能优化的地方吗。
牛客54175811...:
今年对双非很难。1、争取一段大厂实习经历,2、狂磕八股,3、再跑个难度提升的项目。
点赞
评论
收藏
分享
10-10 19:11
华东交通大学 Java
大伙帮忙看看这合同能不能签?
😢😢😢Java
点赞
评论
收藏
分享
今天 14:56
已编辑
东南大学 Java
懂车帝二面 2025.10.11 1h32min
有史以来压力最大的一次面试,没有之一,那面试官就搁那儿疯狂上压力。上来先写题:一道手撕:最小栈三个sql:三个sql刚开始有的用窗口函数写的,然后要重新用联表的方式再写一次进程间通信?(不能只说有哪些通信方式,需要说出具体操作系统是怎么调用的,比如说:1.socket通信两个进程间经历了哪些步骤;2.linux CTRL C 结束进程的时候是怎么实现的?)浏览器输入某一个网址之后会经历哪些步骤?(要求说的非常全,基本要说从应用层到数据链路层经历哪些步骤,每个协议是怎么拿到地址的?比如说IP地址,MAC地址都是怎么拿到的?协议分别是哪些?怎么建立连接的?协议升级后的一些优化?服务端的服务有多台主...
牛客80315082...:
哥们,咱俩可能是同一个面试官 手撕题一样,redis的QPS题一样,URL题一样 也是二面,面试官:“你这就学了个皮毛”,“你这学的太死板了”
查看11道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
HR面,到底该准备些啥(附核心问题回答思路)
2.2W
2
...
如何委婉地拒绝offer
7702
3
...
双非放弃保研,后悔爆哭
7196
4
...
除了卷大厂,还有其他出路吗。。。
4969
5
...
懂车帝二面 2025.10.11 1h32min
4163
6
...
10.12pdd笔试大鸭蛋
3629
7
...
10.12 拼多多技术岗笔试 第二题 求教
2835
8
...
分享一个很友好的公司
2800
9
...
小红书一面面经
2800
10
...
双非秋招timeline供参考(腾讯字节阿里快手美团)
2282
创作者周榜
更多
正在热议
更多
#
安克创新求职进展汇总
#
52966次浏览
523人参与
#
实习生如何通过转正
#
103367次浏览
1388人参与
#
深信服秋招来了
#
278827次浏览
2914人参与
#
Tplink求职进展汇总
#
179272次浏览
908人参与
#
tplink提前批进度交流
#
206044次浏览
1499人参与
#
职场新人体验
#
80792次浏览
579人参与
#
爱玛科技集团求职进展汇总
#
24684次浏览
186人参与
#
面试被问“你的缺点是什么?”怎么答
#
152673次浏览
2069人参与
#
互联网公司爆料
#
143880次浏览
707人参与
#
硬件/芯片公司岗位评价
#
7498次浏览
28人参与
#
招银网络求职进展汇总
#
164103次浏览
979人参与
#
华为海思工作体验
#
28344次浏览
119人参与
#
26届秋招投递记录
#
47503次浏览
495人参与
#
新凯来求职进展汇总
#
48210次浏览
125人参与
#
材料进Fab厂真的劝退吗?
#
55484次浏览
203人参与
#
京东美团大战,你怎么看?
#
132803次浏览
749人参与
#
联影求职进展汇总
#
42238次浏览
282人参与
#
秋招最大的收获是什么?
#
44909次浏览
356人参与
#
机械制造岗投递时间线
#
31646次浏览
379人参与
#
诺瓦星云求职进展汇总
#
219264次浏览
1710人参与
#
应届生,你找到工作了吗
#
68184次浏览
457人参与
#
途虎求职进展汇总
#
71224次浏览
423人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务