【LeetCode】每日一题(2)

简介: 【LeetCode】每日一题(2)

题目:1138. 字母板上的路径 - 力扣(Leetcode)


题目的接口:

class Solution {
public:
    string alphabetBoardPath(string target) {
    }
};

解题思路:

根据题目,我们发现这个字母表格是有规律的,


他是从a b c d e f g h i j k l m n o p q r s t u v w x y z这样排列的,


而且还排成了一个类似表格的形状,这样我们其实可以用坐标来找每个字母,


那我们就不多想,直接用坐标(x, y)定位每个要查找的字母,然后迭代去找。


最后只要小心一下z字母,不要越界就行,因为z字母的右边是没有字母的,如果


直接往右查找,又或者是倒数第二行的字母直接往下查找,再往左找z,这样都会


造成越界访问,所以要先往上、往左查找。


代码:

class Solution {
public:
    //起始坐标会不断变化,所以传引用
    void push_c(int x,int y,int& prev_x, int& prev_y,char tag, string&s)
    {
        //防止在z时越界访问
        //所以我们先向左查找
        while(prev_y > y)
        {
            prev_y--;
            s.push_back('L');
        }
        //再向上查找
        while(prev_x > x)
        {
            prev_x--;
            s.push_back('U');
        }
        //这样再往下和右就不会越界了
        while(prev_x < x)
        {
            prev_x++;
            s.push_back('D');
        }            
        while(prev_y < y)
        {
            prev_y++;
            s.push_back('R');
        }
        //找到之后插入'!'
        s.push_back('!');
    } 
    string alphabetBoardPath(string target) {
        //创建要返回的字符串
        string s;
        //x和y是目标坐标,prev_x和prev_y是起始坐标
        int x, y, prev_x = 0, prev_y = 0;
        //迭代查找
        for(int i = 0; i < target.size(); i++)
        {
            //计算目标坐标
            x = (target[i] - 'a') / 5;
            y = (target[i] - 'a') % 5;
            //实现查找函数,迭代查找
            push_c(x, y, prev_x, prev_y, target[i], s);
        }
        //返回
        return s;
    }
};

过啦!!!

0a1e89ea08e4452487996e3e47d02475.png


写在最后:

以上就是本篇文章的内容了,感谢你的阅读。


如果喜欢本文的话,欢迎点赞和评论,写下你的见解。


如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。



相关文章
|
6月前
|
索引
力扣每日一题 5/25
力扣每日一题 5/25
38 2
|
2月前
【LeetCode-每日一题】移动零
【LeetCode-每日一题】移动零
29 1
|
6月前
力扣每日一题 6/1
力扣每日一题 6/1
44 3
|
6月前
|
Python
力扣每日一题 5/30
力扣每日一题 5/30
36 3
|
6月前
力扣每日一题 6/7
力扣每日一题 6/7
36 3
|
6月前
|
JavaScript
力扣每日一题 5/26
力扣每日一题 5/26
39 2
【LeetCode】每日一题(3)
【LeetCode】每日一题(3)
67 0
LeetCode】每日一题(4)
LeetCode】每日一题(4)
46 0
|
算法 C语言 索引
每日一题:LeetCode-283. 移动零
每日一题:LeetCode-283. 移动零
|
算法
【LeetCode】每日一题(1)
【LeetCode】每日一题(1)
73 0