电子游戏“辐射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)相关推荐

  1. LeetCode_514_自由之路

    题目:自由之路 难度:困难 514.自由之路 电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring" ...

  2. 2021-08-08:自由之路。电子游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表

    2021-08-08:自由之路.电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring"的金属表盘,并 ...

  3. 【LeetCode】自由之路 [H](记忆化搜索)

    514. 自由之路 - 力扣(LeetCode) 一.题目 电子游戏"辐射4"中,任务 "通向自由" 要求玩家到达名为 "Freedom Trail ...

  4. leetcode:514. 自由之路

    题目来源 leetcode:514. 自由之路 题目描述 class Solution {public:int findRotateSteps(string ring, string key) {} ...

  5. 订阅了李笑来的“通往财富自由之路”栏目

    早晨醒来看"学习学习再学习"公众号,发现李笑来在"得到"应用上推出了付费订阅栏目"财富自由之路",199元/年. 思考了几分钟之后,还是决定 ...

  6. 重新认识错过(通向财富自由之路学习笔记十四)

    本周学习<通向财富自由之路>专栏重新认识错过的文章,在文章中作者介绍了自己是如何错过一次升级的.对于这种错过,非常有同感.比如在中学时候,需要学习生物.历史.地理等学科,而这些学科不需要计 ...

  7. 卖萌屋算法岗面试手册上线!通往面试自由之路

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 作为算法工程师,基础知识的重要性自然不必多说.虽然在有些项目中比较难感受到基础的作用,但扎实的coding能力,对算法本质和适用情况的理解,始终是决定 ...

  8. 读《财务自由之路》教会我的道理

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 作者微信:GG_Stone <财务自由之路>是我春节读的第二本书,本来打算将所有的读书笔记和感悟(共 8 本书)一次 ...

  9. MIT创业项目「智能美食餐厅」4月底登陆波士顿自由之路

    Root 假装发自 波士顿 量子位 出品 | 公众号 QbitAI 不到三分钟. 一份由七个全自动化的滚筒洗衣机烹饪的美食就呈递到你的面前.  料理的味道还由盛名享誉全球的纽约法餐大厨Daniel ...

最新文章

  1. 【数据挖掘】数据挖掘简介
  2. CentOs下搭建GitLab
  3. ALV中调用Excel inplace时没能传递数据实例解决
  4. 修改注册表 为右键添加快捷命令
  5. python中的迭代器,生成器,闭包,装饰器,@property
  6. linux中tcp连接内核参数调优somaxconn
  7. springboot报错---No identifier specified for entity: com.example.demo.entity.User
  8. 单页面 Web 应用(Single Page Application,SPA)的工作原理介绍
  9. 未命名语句块中的声明
  10. 2019 ICPC Asia Nanjing Regional
  11. 浅谈 js 数字格式类型
  12. 如何快速获知需要的SPS Sql Search语法
  13. Javascript第五章倒计时第二课
  14. 页面上拖动图片进行排序
  15. chrome浏览器 json插件【WEB前端助手】
  16. 风格迁移篇-AdaIN --使用自适应实例规范化实时传输任意样式
  17. 完美解决.CHM文件打不开或者打开以后显示空白的情况
  18. 分类变量、有序变量、数值变量差异分析(二)t检验
  19. 支付宝即时到账之给二维码设置超时失效时间
  20. leetcode,605题【种花问题】

热门文章

  1. 【Java】字符串转换为数字:Integer的parseInt方法
  2. Android 适配(一)
  3. 线程系列3--Java线程同步通信技术
  4. hadoop2.x HDFS快照介绍
  5. (第2篇)一篇文章教你轻松安装hadoop
  6. HTTP基本认证(Basic Authentication)的JAVA示例
  7. myeclipse始终build workspace
  8. UVA 11825 状态压缩DP+子集思想
  9. 一个学者科研的感受,推荐一下(小木虫)
  10. linux jenkins部署之路之,ftp部署怎么匿名还好用咋解决思密达