LeetCode 字串是否在矩陣字母

2021-10-10 21:46:32 字數 997 閱讀 8568

題目描述:

給定乙個字母矩陣,所有的字母都與上下左右四個方向上的字母相連.給定乙個字串,

求字串能不能在矩陣中尋找到.

示例 :

input:board=[['a','b','c','e'],

['s','f','c','s']

['a','d','e','e']],word="abcced"

output:true

從左上角的'a'開始,可以先向右、再向下、最後向左,找到連續的"abcced";

解題思路:

不同於排列組合的問題,本題採用的並不是修改輸出方式,而是修改訪問標記。在我們

對任意位置進行深度優先搜尋時,我們先標記當前位置為已訪問,已避免重複遍歷(可以

防止向右搜尋後又向左返回);在所有的可能都搜尋完成後,再迴改當前位置為未訪問,防止

干擾其它位置的搜尋到當前位置.使用回溯法,可以只對乙個二維的訪問矩陣進行修改,而不是

把每次的搜尋狀態作為乙個新物件傳入遞迴函式中.

#include #include using namespace std;

class solution

bool wordsearch()

visited[i][j]=true; /*修改當前節點狀態*/

/*遞迴子節點*/

backtrack(i+1,j,board,find,visited,pos+1);

backtrack(i-1,j,board,find,visited,pos+1);

backtrack(i,j+1,board,find,visited,pos+1);

backtrack(i,j-1,board,find,visited,pos+1);

}};int main(int argc,char* ar**), ,};

string word="abcced";

cout

}

leetcode 判斷字串是否為字元重排

今天刷的是offer題 判斷兩個字串是否為字元重排 由於時間原因,我最先想到的是遍歷第乙個字串,然後從第二個字串中每次刪除第乙個字串中遍歷的字元,如果最後剩下的是空串則返回true,否則返回false。如下 1 class solution 10else if size1 size2 1114 el...

LeetCode 字串 反轉字串

反轉字串 編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列char的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。示例 1 輸入 h e l l o 輸出 o l ...

LeetCode 字串 親密字串

給定兩個由小寫字母構成的字串 a 和 b 只要我們可以通過交換 a 中的兩個字母得到與 b 相等的結果,就返回 true 否則返回 false 示例 輸入 a ab b ba 輸出 true 輸入 a ab b ab 輸出 false 輸入 a aa b aa 輸出 true 遍歷字串 a,記錄 a...