leetcode514. 自由之路(dp)
电子游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。
给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。
最初,ring 的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完 key 中的所有字符。
旋转 ring 拼出 key 字符 key[i] 的阶段中:
您可以将 ring 顺时针或逆时针旋转一个位置,计为1步。旋转的最终目的是将字符串 ring 的一个字符与 12:00 方向对齐,并且这个字符必须等于字符 key[i] 。
如果字符 key[i] 已经对齐到12:00方向,您需要按下中心按钮进行拼写,这也将算作 1 步。按完之后,您可以开始拼写 key 的下一个字符(下一阶段), 直至完成所有拼写。
示例:
输入: ring = “godding”, key = “gd”
输出: 4
解释:
对于 key 的第一个字符 ‘g’,已经在正确的位置, 我们只需要1步来拼写这个字符。
对于 key 的第二个字符 ‘d’,我们需要逆时针旋转 ring “godding” 2步使它变成 “ddinggo”。
当然, 我们还需要1步进行拼写。
因此最终的输出是 4。
代码
class Solution {public int findRotateSteps(String ring, String key) {int n=key.length(),m=ring.length();int[][] dp=new int[n][m];List<Integer> [] temp=new ArrayList[26];for(int i=0;i<26;i++)temp[i]=new ArrayList<>();for(int i=0;i<m;i++){temp[ring.charAt(i)-'a'].add(i);}//记录相同字母在ring中出现的位置for (int i=0;i<n;i++)Arrays.fill(dp[i],0x3f3f3f);for(int c:temp[key.charAt(0)-'a'])dp[0][c]=Math.min(c,m-c)+1;//初始化第一步可能的移动for(int i=1;i<n;i++)for(int j:temp[key.charAt(i)-'a'])//遍历这一步可能到达的位置for(int k:temp[key.charAt(i-1)-'a'])//遍历上一步所有可能停留的位置dp[i][j]= Math.min(dp[i][j],Math.min(Math.abs(j-k), m-Math.abs(j-k))+1+dp[i-1][k]);int min=Integer.MAX_VALUE;for(int i=0;i<m;i++)min=Math.min(min,dp[n-1][i]);return min;}
}
leetcode514. 自由之路(dp)相关推荐
- LeetCode_514_自由之路
题目:自由之路 难度:困难 514.自由之路 电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring" ...
- 2021-08-08:自由之路。电子游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表
2021-08-08:自由之路.电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring"的金属表盘,并 ...
- 【LeetCode】自由之路 [H](记忆化搜索)
514. 自由之路 - 力扣(LeetCode) 一.题目 电子游戏"辐射4"中,任务 "通向自由" 要求玩家到达名为 "Freedom Trail ...
- leetcode:514. 自由之路
题目来源 leetcode:514. 自由之路 题目描述 class Solution {public:int findRotateSteps(string ring, string key) {} ...
- 订阅了李笑来的“通往财富自由之路”栏目
早晨醒来看"学习学习再学习"公众号,发现李笑来在"得到"应用上推出了付费订阅栏目"财富自由之路",199元/年. 思考了几分钟之后,还是决定 ...
- 重新认识错过(通向财富自由之路学习笔记十四)
本周学习<通向财富自由之路>专栏重新认识错过的文章,在文章中作者介绍了自己是如何错过一次升级的.对于这种错过,非常有同感.比如在中学时候,需要学习生物.历史.地理等学科,而这些学科不需要计 ...
- 卖萌屋算法岗面试手册上线!通往面试自由之路
一只小狐狸带你解锁 炼丹术&NLP 秘籍 作为算法工程师,基础知识的重要性自然不必多说.虽然在有些项目中比较难感受到基础的作用,但扎实的coding能力,对算法本质和适用情况的理解,始终是决定 ...
- 读《财务自由之路》教会我的道理
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 作者微信:GG_Stone <财务自由之路>是我春节读的第二本书,本来打算将所有的读书笔记和感悟(共 8 本书)一次 ...
- MIT创业项目「智能美食餐厅」4月底登陆波士顿自由之路
Root 假装发自 波士顿 量子位 出品 | 公众号 QbitAI 不到三分钟. 一份由七个全自动化的滚筒洗衣机烹饪的美食就呈递到你的面前. 料理的味道还由盛名享誉全球的纽约法餐大厨Daniel ...
最新文章
- 【数据挖掘】数据挖掘简介
- CentOs下搭建GitLab
- ALV中调用Excel inplace时没能传递数据实例解决
- 修改注册表 为右键添加快捷命令
- python中的迭代器,生成器,闭包,装饰器,@property
- linux中tcp连接内核参数调优somaxconn
- springboot报错---No identifier specified for entity: com.example.demo.entity.User
- 单页面 Web 应用(Single Page Application,SPA)的工作原理介绍
- 未命名语句块中的声明
- 2019 ICPC Asia Nanjing Regional
- 浅谈 js 数字格式类型
- 如何快速获知需要的SPS Sql Search语法
- Javascript第五章倒计时第二课
- 页面上拖动图片进行排序
- chrome浏览器 json插件【WEB前端助手】
- 风格迁移篇-AdaIN --使用自适应实例规范化实时传输任意样式
- 完美解决.CHM文件打不开或者打开以后显示空白的情况
- 分类变量、有序变量、数值变量差异分析(二)t检验
- 支付宝即时到账之给二维码设置超时失效时间
- leetcode,605题【种花问题】