当前位置: 首页 > news >正文

【力扣-LeetCode】1138. 字母板上的路径-C++题解

1138. 字母板上的路径

难度中等98收藏分享切换为英文接收动态反馈

我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]

在本题里,字母板为board = ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"],如下所示。

我们可以按下面的指令规则行动:

  • 如果方格存在,'U' 意味着将我们的位置上移一行;

  • 如果方格存在,'D' 意味着将我们的位置下移一行;

  • 如果方格存在,'L' 意味着将我们的位置左移一列;

  • 如果方格存在,'R' 意味着将我们的位置右移一列;

  • '!' 会把在我们当前位置 (r, c) 的字符 board[r][c] 添加到答案中。

(注意,字母板上只存在有字母的位置。)

返回指令序列,用最小的行动次数让答案和目标 target 相同。你可以返回任何达成目标的路径。

示例 1:

输入:target = "leet"

输出:"DDR!UURRR!!DDD!"

示例 2:

输入:target = "code"

输出:"RR!DDRR!UUL!R!"

提示:

  • 1 <= target.length <= 100

  • target 仅含有小写英文字母。

解题思路:构建字母-坐标映射,模拟搜索路径。

AC代码:

class Solution {
public:struct Point{int r,c;Point(int RR,int CC){r=RR;c=CC;}Point(){}};string alphabetBoardPath(string target) {// 1、获取目标字母的坐标map<char,Point> index;char C='a';int cnt=0;for(int line=0;cnt<26;line++){for(int row=0;row<5 && cnt<26;row++){Point P(line,row);index[C]=P;cnt++;C+=1;}}vector<Point> PTS;for(int i=0;i<target.length();i++){PTS.push_back(index[target[i]]);}string path="";// 2. 模拟搜索路径for(int i=0;i<PTS.size();i++){ // former->curPoint former;if(i==0)former=Point(0,0);elseformer=PTS[i-1];Point cur=PTS[i];if(cur.r==former.r && cur.c==former.c){path+="!";continue;}if(cur.c<former.c)for(int i=1;i<=former.c-cur.c;i++)path+="L";if(cur.r>former.r){}for(int i=1;i<=cur.r-former.r;i++)path+="D";if(cur.r<former.r)for(int i=1;i<=former.r-cur.r;i++)path+="U";if(cur.c>former.c)for(int i=1;i<=cur.c-former.c;i++)path+="R";path+="!";}return path;//simulate// (0,0)->(2,1): 3 steps// (2,1)->(0,4): 2+3=5 steps// (0,4)->(3,4): 3 steps// sum=3+5+3+4=15 steps}
};

http://www.lryc.cn/news/4078.html

相关文章:

  • 基于Java+SpringBoot+Vue前后端分离酒店管理系统设计与实现
  • 【软考系统架构设计师】2022下综合知识历年真题
  • 【计组】理解Disruptor--《计算机组成原理》(十五)
  • Windows11 安装Apache24全过程
  • 1302机器翻译(队列)
  • AcWing、第 90 场周赛:4806. 首字母大写、4807. 找数字、4808. 构造字符串(C++)
  • 跟同事杠上了,Apache Beanutils为什么被禁止使用?
  • Golang 模糊测试的使用
  • RSA公钥加密机制跨语言应用实战
  • P7面试送命题
  • 零信任-微软零信任介绍(2)
  • C++中对象调用成员函数this指针的作用
  • JavaScript------数组
  • 迷宫《1》
  • 剑指 Offer 20. 表示数值的字符串
  • 阻抗匹配之反射波形测量
  • 微信小程序 java家校通Springboot中小学家校联系电子作业系统
  • Fluent Python 笔记 第 8 章 对象引用、可变性和垃圾回收
  • 转义字符的分类
  • 剑指 Offer 03. 数组中重复的数字
  • 飞速创新更新IPO招股书:计划募资约14亿元,向伟为实际控制人
  • JUC(java.util.concurrent) 的常见类
  • Angular4 中 ckeditor5 插件的使用
  • [python刷题模板] 前缀函数/next数组/kmp算法
  • rust 程序设计语言入门(1)
  • 基于蜣螂算法改进的LSTM预测算法-附代码
  • Python安全开发——Scapy流量监控模块watchdog
  • 阶段二5_集合ArrayList
  • 十一、Python——匿名函数
  • 数组常使用的方法