我們從一塊字母板上的位置 (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 僅含有小寫英文本母。
笨方法,bfs
class solution ;
vectordy = ;
string bfs(vector> graph,int &i,int &j,char it)
else
i = ni;j = nj;
return tans+="!";
}graph[ni][nj] = ' ';}}
}}
return tans;
}string alphabetboardpath(string target) ,,,,,};
string ans = "";
int i = 0,j = 0;
for(auto it : target)
ans += bfs(graph,i,j,it);
}return ans;
}};
leetcode1087 字母切換
我們用乙個特殊的字串 s 來表示乙份單詞列表,之所以能展開成為乙個列表,是因為這個字串 s 中存在乙個叫做 選項 的概念 單詞中的每個字母可能只有乙個選項或存在多個備選項。如果只有乙個選項,那麼該字母按原樣表示。如果存在多個選項,就會以花括號包裹來表示這些選項 使它們與其他字母分隔開 例如 表示 a...
LeetCode(242 字母異構)
如題 看上去很簡單,但是有點蛋疼。直接的做法是什麼,遍歷s,對應的取每一位字元然後對應從t中刪除相同的字元,直觀的實現 public static boolean isanagram string s,string t for int i 0 i但是,很蛋疼的是,時間超限了 另尋它法,s和t擁有相同...
leetcode 49 字母異位
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。通過次數80,334提交次數129,632 思路 還是...