您现在的位置是:首页 > Javascript
当前栏目
【LeetCode】每日一题(2)
2023-04-18 16:27:32 时间
目录
题目:1138. 字母板上的路径 - 力扣(Leetcode)
题目: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;
}
};
过啦!!!
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。
相关文章
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 对《javascript 杂谈之哪种写法你更喜欢?》最后一种“匿名函数法”的解释
- javascript 杂谈之哪种写法你更喜欢?
- Web安全测试之XSS
- 如何快速成为javascript高手的思考
- Fiddler - 前端开发值得拥有
- 通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能
- Web页面中5种超酷的Hover效果
- 体验Managed Extensibility Framework精妙的设计
- Microsoft NLayerApp案例理论与实践 - 多层架构与应用系统设计原则
- 从团购网的漏洞看网站安全性问题
- 推荐25个提高网站可用性和转化率的工具
- 2010 Web前端技术趋势及总结
- 对JavaScript开发中困扰的思考
- Web前端开发--应该有一批程序员去专注。
- 名站技术分析 — facebook奇特的页面加载技术
- Js动画(二)梦幻西游之逍遥生游览北俱芦洲
- 高性能WEB开发(11) - flush让页面分块,逐步呈现
- 手工製Coded UI Test(Visual Studio 2010新的UI自動化測試)
- 跟我一起学写jQuery插件(附完整实例及下载)