/**
* @param {string} target
* @return {string}
*/
var alphabetBoardPath = function (target) {
var result = '';
var board = ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"]
var length = target.length;
var currentX = 0;
var currentY = 0;
for (var i = 0; i < length; i++) {
for (var j = 0; j < board.length; j++) {
if (board[j].indexOf(target[i]) > -1) {
var tempY = j;
var tempX = board[j].indexOf(target[i]);
if (currentX == tempX && currentY == tempY) {
result += '!';
} else {
if (currentX == 0 && currentY == 5) {
var diffY = tempY - currentY;
if (diffY > 0) {
for (var p = 0; p < diffY; p++) {
result += 'D'
}
} else {
for (var p = 0; p < Math.abs(diffY); p++) {
result += 'U'
}
}
var diffX = tempX - currentX;
if (diffX > 0) {
for (var p = 0; p < diffX; p++) {
result += 'R'
}
} else {
for (var p = 0; p < Math.abs(diffX); p++) {
result += 'L'
}
}
} else {
var diffX = tempX - currentX;
if (diffX > 0) {
for (var p = 0; p < diffX; p++) {
result += 'R'
}
} else {
for (var p = 0; p < Math.abs(diffX); p++) {
result += 'L'
}
}
var diffY = tempY - currentY;
if (diffY > 0) {
for (var p = 0; p < diffY; p++) {
result += 'D'
}
} else {
for (var p = 0; p < Math.abs(diffY); p++) {
result += 'U'
}
}
}
result += '!';
}
currentX = tempX;
currentY = tempY;
}
}
}
return result;
};
console.log(alphabetBoardPath('zb'));
习题
思路
从一个字母到另一个字母有一个最短的矩阵距离,只要按直线行走即可。
注意点:z这个点的位置比较特殊,因为z的右边没有其他点,所有从z不能往右移动,其他点也不可能向左移动到达z点
解答