题目描述
题目链接:[LeetCode 1138]字母板上的路径
 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。
在本题里,字母板为board = [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”],如下所示。

示例1
输入:target = “leet”
 输出:“DDR!UURRR!!DDD!”
示例2
输入:target = “code”
 输出:“RR!DDRR!UUL!R!”
提示:
 1 <= target.length <= 100
 target 仅含有小写英文字母。
思路分析
很简单的题目,主要是z的判别比较恶心,第一想法是判断当前点是否在z这个地方,如果在z的话,需要先移动到u的位置,再移动到所要去的位置(因为z的右边是不能走的)
后面稍微细想了一下,发现只要调整变换顺序就可以解决了,如果我们把向上判断放在向右之前,那么路径肯定是先向上走再向右,这样可以避免在z点先右后上的错误路径
同理,向左判断必须放在向下之前,例如从v到z,必须先向左走再向下,如果先向下在向左,就会到达不可达的区域
代码
class Solution {
public:
    string solve(int a, int b, int c, int d) {
        string res;
        //向左在向下之前,向上在向右之前
        while(b > d) res += 'L', b--;
        while(a < c) res += 'D', a++;
        while(a > c) res += 'U', a--;
        while(b < d) res += 'R', b++;
        res += '!';
        return res;
    }
    string alphabetBoardPath(string target) {
        string res;
        int x = 0, y = 0;
        for (int i = 0; i < target.size(); i++) {
            int t = target[i] - 'a', p = t / 5, q = t % 5;
            res += solve(x, y, p, q);
            x = p, y = q;
        }
        return res;
    }
};
                
















![[个人笔记] Zabbix实现自定义脚本监控Agent端](https://img-blog.csdnimg.cn/ba9a32e68079454889251c63a0169816.png)

