发布于2019-08-20 11:53 阅读(1517) 评论(0) 点赞(22) 收藏(4)
我们从一块字母板上的位置 (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
仅含有小写英文字母。解题思路
这个题目只需要我们计算出字母的坐标,然后计算每次的横纵坐标距离即可。但是有一个麻烦的点就是这个z
,这里我用了一点trick
,我们只要保证'U'
和'L'
在'D'
和'R'
的前面触发即可。
import string
class Solution:
m = {c: [i // 5, i % 5] for i, c in enumerate(string.ascii_lowercase)}
def alphabetBoardPath(self, target: str) -> str:
x0, y0 = 0, 0
res = ""
for c in target:
x, y = self.m[c]
res += 'L'*max(0, y0 - y) + 'U'*max(0, x0 - x) + 'D'*max(0, x - x0) + 'R'*max(0, y - y0) + '!'
x0, y0 = x, y
return res
reference:
https://leetcode.com/problems/alphabet-board-path/discuss/345235/Python-Easy-Solution
我将该问题的其他语言版本添加到了我的GitHub Leetcode
如有问题,希望大家指出!!!
作者:38373
链接:https://www.pythonheidong.com/blog/article/49141/eebf815658094bceb76d/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!