可先浏览:Leetcode 79. Word Search--给定一个字符串,在二维数组中遍历每一个字符,要求连续遍历相邻的元素,每个元素只能遍历一次
这里不把元素作为一个类,不在使用该元素的行列号去比较是否已被遍历过。这里使用异或操作,如果相等,则异或256,则该元素值会变化,下次再有相同的字符过来,比较也是不相等的,然后如果上下左右都无法找到与下一个字符相等的元素时,则该元素再异或256一次,则又变化为原值,相当于没有遍历,从已遍历列表中删除了。使用的原理是:连续两次与同一个数的异或则值不变,又是原值。
//Runtime: 13 ms, faster than 43.39% of Java online submissions for Word Search.
public class Solution_79_WordSearch_Recursion2 {
public static void main(String[] args) {
char[][] board = new char[][]{
{'A', 'B', 'C', 'E',}, {'S', 'F', 'E', 'S'}, {'A', 'D', 'E', 'E'}};
String word = "ABCESEEEFS";
System.out.println(new Solution_79_WordSearch_Recursion2().exist(board, word));
}