演算法問題——判斷陣列中是否含有某一字串
判斷陣列中是否含有某一字串
問題描述:
請設計一個函式,用來判斷在一個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格子。例如,在下面的3×4的矩陣中包含一條字串“bfce”的路徑(路徑中的字母用加粗標出)。
[[“a”,“b”,“c”,“e”],
[“s”,“f”,“c”,“s”],
[“a”,“d”,“e”,“e”]]
但矩陣中不包含字串“abfb”的路徑,因為字串的第一個字元b佔據了矩陣中的第一行第二個格子之後,路徑不能再次進入這個格子。
來源:劍指offer 12
程式碼:
public boolean exist(char[][] board, String word) {
char[] words = word.toCharArray();
for(int i = 0; i < board.length; i++) {
for(int j = 0; j < board[0].length; j++) {
if(dfs(board, words, i, j, 0)) return true;
}
}
return false;
}
boolean dfs(char[][] board, char[] word, int i, int j, int k) {
if(i >= board.length || i < 0 || j >= board[0].length || j < 0 || board[i][j] != word[k]) return false;
if(k == word.length - 1) return true;
char tmp = board[i][j];
board[i][j] = '/';
boolean res = dfs(board, word, i + 1, j, k + 1) || dfs(board, word, i - 1, j, k + 1) ||
dfs(board, word, i, j + 1, k + 1) || dfs(board, word, i , j - 1, k + 1);
board[i][j] = tmp;
return res;
}
}
相關文章
- js如何使用includes()判斷陣列是否含有指定值JS陣列
- JS如何判斷一個陣列是否為空、是否含有某個值JS陣列
- js判斷字串是否含有特殊字元和emoji表情JS字串字元
- JavaScript 判斷是否是陣列JavaScript陣列
- 演算法題:判斷括號字串是否有效演算法字串
- Array · 判斷某元素是否在陣列中陣列
- golang中判斷兩個slice是否相等與判斷值下的 陣列是否相等Golang陣列
- 判斷Map集合中是否存在某一個key
- 判斷一個陣列是否排好序陣列
- nginx判斷路徑是否含有某個引數做判斷Nginx
- 判斷是否是陣列的幾種方法陣列
- 判斷字串是否為空字串
- 判斷字串是否唯一字串
- 判斷URL字串是否合法字串
- C#判斷一個字串是否是數字或者含有某個數字C#字串
- 寫個方法判斷陣列物件中是否存在某個物件陣列物件
- Go小工具系列——判斷元素是否存在於陣列中Go陣列
- 判斷是否為陣列的 JavaScript 方法總結陣列JavaScript
- PHP 判斷一個字元是否在字串中PHP字元字串
- JavaScript判斷字串是否為空JavaScript字串
- js判斷字串是否為空JS字串
- java判斷字串是否為空Java字串
- Javascript-判斷是否為陣列的5種方法JavaScript陣列
- 判斷陣列裡面的json 物件是否相等,相等則移除陣列JSON物件
- 寫一個方法判斷陣列內元素是否全部相同陣列
- Java 判斷JSONObject是否包含含有某個屬性值(key)JavaJSONObject
- 判斷兩字串的字符集是否相同《演算法很美》字串演算法
- javascript中如何判斷一個字串是否為JSON格式JavaScript字串JSON
- 多個陣列,判斷鍵值是否存在從屬關係陣列
- C#判斷字串是否為日期格式C#字串
- js:判斷物件或陣列JS物件陣列
- sql 判斷 某列中是否包含 某種符號SQL符號
- J2SE-判斷字串是否為空字串
- PHP判斷一個字串是否包含亂碼PHP字串
- map判斷值是否存在需要注意的問題
- android判斷狀態列是否可見Android
- python中字串格式判斷Python字串
- 大神教你如何判斷Python中字串是否為空和nullPython字串Null