1 class Solution: 2 def alphabetBoardPath(self, target: str) -> str: 3 #a->97 4 #z->122 5 board = [] 6 board.append([0,1,2,3,4]) 7 board.append([5,6,7,8,9]) 8 board.append([10,11,12,13,14]) 9 board.append([15,16,17,18,19]) 10 board.append([0,21,22,23,24]) 11 board.append([25,-1,-1,-1,-1]) 12 #print(board) 13 path = [] 14 for c in target: 15 asicode = ord(c) - 97 16 17 row = asicode // 5 18 column = asicode % 5 19 path.append((row,column)) 20 #print(path) 21 22 res = [] 23 x,y = 0,0 24 for p in path: 25 while p[0] != x or p[1] != y: 26 if p[0] > x and x + 1 < 6 and board[x+1][y] != -1: 27 x += 1 28 res.append('D') 29 elif p[0] < x and x - 1 >= 0 and board[x-1][y] != -1: 30 x -= 1 31 res.append('U') 32 elif p[1] > y and y + 1 < 5 and board[x][y+1] != -1: 33 y += 1 34 res.append('R') 35 elif p[1] < y and y - 1 >= 0 and board[x][y-1] != -1: 36 y -= 1 37 res.append('L') 38 if p[0] == x and p[1] == y: 39 res.append('!') 40 return res