首页 > 其他分享 >字母板上的路径

字母板上的路径

时间:2023-02-12 17:24:02浏览次数:50  
标签:target int 字母 路径 alphabetPostion 板上 curPostion board

题目

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

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

image

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

如果方格存在,'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 仅含有小写英文字母。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/alphabet-board-path
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

模拟:
虚拟一个棋盘直接模拟在棋盘上的动作,需要注意一点的是'z'这个坐标,右侧是空的,所以当处理z的时候,需要特殊处理一下。

    public static String alphabetBoardPath(String target) {
        HashMap<Character,alphabetPostion> boardMap=new HashMap<>();
        for (int i = 0; i < 26; i++) {
            char c = (char)((int)'a'+i);
            int y = i/5;
            int x = i%5;
            alphabetPostion alphabetPostion= new alphabetPostion();
            alphabetPostion.c=c;
            alphabetPostion.x=x;
            alphabetPostion.y=y;
            boardMap.put(c,alphabetPostion);
        }
        alphabetPostion curPostion= new alphabetPostion();
        curPostion.c='a';
        curPostion.x=0;
        curPostion.y=0;
        StringBuilder stringBuilder= new StringBuilder();
        for (int i=0;i<target.length();i++)
        {
            char tChar = target.charAt(i);
            alphabetPostion tPostion = boardMap.get(tChar);
            while (true)
            {
                if(curPostion.c=='z' && curPostion.y!=tPostion.y)
                {
                    curPostion.y--;
                    stringBuilder.append("U");
                    continue;
                }
                if(tPostion.c=='z' && tPostion.x!=0)
                {
                    curPostion.x--;
                    stringBuilder.append("L");
                    continue;
                }
                if (curPostion.x>tPostion.x)
                {
                    curPostion.x--;
                    stringBuilder.append("L");
                    continue;
                }
                if (curPostion.x<tPostion.x)
                {
                    curPostion.x++;
                    stringBuilder.append("R");
                    continue;
                }
                if(curPostion.y>tPostion.y)
                {
                    curPostion.y--;
                    stringBuilder.append("U");
                    continue;
                }
                if(curPostion.y<tPostion.y)
                {
                    curPostion.y++;
                    stringBuilder.append("D");
                    continue;
                }
                curPostion.c=tPostion.c;
                stringBuilder.append("!");
                break;
            }
        }
        return stringBuilder.toString();
    }

class alphabetPostion{
    char c;
    int x;
    int y;
} 

标签:target,int,字母,路径,alphabetPostion,板上,curPostion,board
From: https://www.cnblogs.com/huacha/p/17114160.html

相关文章

  • C语言填空:英文单词首字母变大写
    #include<stdio.h>【1】//输人一行字符串,由英语单词和若干空格组成,将每个单词的第一个字母不是大写的变为大写并输出。main(){charch[100];inti=0,n=0;......
  • 调度器43—root_domain—更新路径
    1. root_domain的路径的赋值路径kernel_init_freeable//内核初始化路径调用【2】......
  • python路径 目录 文件夹
    绝对路径1、os.path方法importosimportsyscurrent_directory=os.path.dirname(os.path.abspath(__file__))print(current_directory)2、os.path.abspath方法import......
  • Server-U 设置虚拟路径
    1.物理路径:要映射到的目标目录2.映射物理路径到: %HOME%   %HOME%代表ftp根目录3.虚拟名称:访问时在ftp目录下显示的名称4.设置对物理路径的访问权限做完以......
  • 路径规划的最优算法实现
    项目背景与简介在生活当中,我们经常面对了许多路径规划问题,通常会考虑下列几种因素:红绿灯多少,道路长短,车流量多少。一般都是应用程序在帮我们做出判断和选择,而我们减少了......
  • javaWeb03-请求转发和请求重定向【包含编码格式与路径问题】
    本文主要讲述javaWeb的请求转发和请求重定向的区别一.请求转发1.图解2.代码示例Servlet1的代码示例如下publicclassServlet1extendsHttpServlet{@......
  • 基于图搜索的路径规划
    基于图搜索的路径规划配置空间维度等于机器人的自由度,可以理解为一个点可以表示一个机器人的位姿。例如小车4自由度(x,y,z,θ)。在配置空间中,机器人表示为点。在配置空......
  • Kinodynamc planning 满足动力学约束的路径规划
    Kinodynamcplanning满足动力学约束的路径规划StateLatticePlanning之前两节课的运动规划都是不考虑运动约束将机器人看成一个质点,而实际问题则是需要考虑运动学约束......
  • opencv中的读写视频和图片中有中文路径
    importcv2#表示参数是视频文件路径则打开视频video=cv2.VideoCapture("D:/Temp/测试/1.mp4")#循环读取每一帧i=1while(video.isOpened()):  ret,frame=video......
  • 在java路径上找不到javax.servlet.http.HttpServlet
    1.将写好的网页代码导入Java中会发现index.jsp文件开头部分出现报错   2.错误提示是找不到java路径问题   3.在项目中鼠标右键进行找到BuildPath选项点击......