-
題目連結
-
解題思路
- 一道回溯的題目。
- 我現在在
[i, j]
,然後處理到單詞的index
位置,index之前的都已經解決了,現在要往哪走?很明顯如果[i + 1, j]
的位置等於index
的單詞,我可以去「試試」能不能走通。所以其實很簡單,每當來到[i, j]
,單詞index
,我就看上下左右四個位置,如果和index
的位置相等,就可以去試試。如果上下左右都不行,那就說明「此路不通」,這一次的嘗試失敗了。 - 有一個細節,我怎麼能夠「不走回頭路」?很簡單,我走過的位置,就把其變成一個不可能的字母,比如255。
-
程式碼
class Solution { public: vector<vector<int>> dir{{1, 0}, {0, 1}, {-1, 0}, {0, -1}}; // 當前在[i, j] 來到了單詞的index位置 bool process(vector<vector<char>>& board, string &word, int index, int i, int j, const int n, const int m) { if (index == word.size()) { return true; } // 這個for迴圈其實就是上下左右四個方向嘗試 for (int k = 0; k < 4; ++k) { int next_i = i + dir[k][0]; int next_j = j + dir[k][1]; bool ans = false; if (next_i >= 0 && next_i < n && next_j >= 0 && next_j < m && board[next_i][next_j] == word[index]) { board[next_i][next_j] = 250; // 標記我已經走過了 ans = process(board, word, index + 1, next_i, next_j, n, m); board[next_i][next_j] = word[index]; // 不要忘記恢復回來 } if (ans) { return true; } } return false; } bool exist(vector<vector<char>>& board, string word) { int n = board.size(); int m = board[0].size(); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { bool ans = false; if (board[i][j] == word[0]) { board[i][j] = 250; ans = process(board, word, 1, i, j, n, m); board[i][j] = word[0]; } if (ans) { return true; } } } return false; } };
79. 單詞搜尋
相關文章
- [LeetCode題解]79. 單詞搜尋LeetCode
- 【Leetcode 346/700】79. 單詞搜尋 【中等】【回溯深度搜尋JavaScript版】LeetCodeJavaScript
- MySQL單詞搜尋相關度排名MySql
- LeetCode-079-單詞搜尋LeetCode
- 搜尋引擎es-分詞與搜尋分詞
- java+lucene中文分詞,搜尋引擎搜詞剖析Java中文分詞
- solr搜尋分詞優化Solr分詞優化
- grep 命令系列:使用 grep 命令來搜尋多個單詞
- jquery搜尋關鍵詞高亮效果jQuery
- BM42:語義搜尋與關鍵詞搜尋結合
- 語音技術——關鍵詞搜尋
- API介面獲取搜尋詞統計?API
- 中文搜尋引擎技術揭密:中文分詞中文分詞
- 拼多多獲得搜尋詞推薦 APIAPI
- Google:2020年美國搜尋詞榜單 “新冠”高居榜首Go
- Lucene的IK分詞器學習,增加支援單個特殊符號搜尋分詞符號
- 微信小程式實現搜尋關鍵詞高亮微信小程式
- Elasticsearch:使用同義詞 synonyms 來提高搜尋效率Elasticsearch
- Elasticsearch 實現簡單搜尋Elasticsearch
- 【搜尋引擎】 PostgreSQL 10 實時全文檢索和分詞、相似搜尋、模糊匹配實現類似Google搜尋自動提示SQL分詞Go
- 網站最佳化搜尋引擎與關鍵詞網站
- 淘寶API介面:獲得關鍵詞搜尋推薦API
- 將搜尋關鍵詞高亮顯示例項程式碼
- jQuery的搜尋關鍵詞自動匹配外掛jQuery
- Lumia網路搜尋排名超越Android關鍵詞Android
- ElasticSearch 簡單的 搜尋 聚合 分析Elasticsearch
- [教程二] 寫一個搜尋:解決搜尋結果高亮問題,使用 Laravel Scout,Elasticsearch,ik 分詞LaravelElasticsearch分詞
- 拼多多搜尋詞統計 API介面操作展示說明API
- 拼多多API:拼多多獲得搜尋詞統計 APIAPI
- [教程三] 寫一個搜尋:自定義詞庫;使用 Laravel Scout,Elasticsearch,ik 分詞LaravelElasticsearch分詞
- 海量資料搜尋---搜尋引擎
- 二叉搜尋樹應用-判斷一個單詞是否拼寫正確,實現簡單字典
- 洛谷題單指南-搜尋-P1019 [NOIP2000 提高組] 單詞接龍
- 【簡單搜尋】POJ 2251 Dugeon MasterAST
- Django單元測試與搜尋引擎Django
- 快速整合搜尋介面下拉選單框架框架
- 搜尋引擎核心技術與演算法 —— 詞項詞典與倒排索引優化演算法索引優化
- 搜尋關鍵詞優化 助力全網霸屏營銷優化