力扣刷題:?jiǎn)卧~搜索(java實(shí)現(xiàn))

題目:給定一個(gè) m x n 二維字符網(wǎng)格board 和一個(gè)字符串單詞 word 蛇捌。如果 word 存在于網(wǎng)格中百姓,返回 true 笛洛;否則,返回 false 咐蚯。

單詞必須按照字母順序童漩,通過(guò)相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格春锋。同一個(gè)單元格內(nèi)的字母不允許被重復(fù)使用矫膨。

示例 1:


image.png
輸入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
輸出:true

示例 2:


image.png
輸入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
輸出:true

示例 3:


image.png
輸入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
輸出:false

提示:

  • m == board.length
  • n = board[i].length
  • 1 <= m, n <= 6
  • 1 <= word.length <= 15
  • board 和 word 僅由大小寫(xiě)英文字母組成

進(jìn)階:你可以使用搜索剪枝的技術(shù)來(lái)優(yōu)化解決方案,使其在 board 更大的情況下可以更快解決問(wèn)題期奔?

相關(guān)標(biāo)簽:數(shù)組侧馅、回溯矩陣

解析:這題大體思路就是先找到單詞的起點(diǎn)位置呐萌,然后根據(jù)上下左右四個(gè)方向找符合條件的字符馁痴,同時(shí)考慮到不能重復(fù)使用同一個(gè)位置的字符這個(gè)條件,可以把訪問(wèn)過(guò)的路徑的字符置為*號(hào)肺孤,遍歷過(guò)后替換回來(lái)罗晕。具體代碼如下所示:

public boolean exist(char[][] board, String word) {
        char[] arr = word.toCharArray();
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[0].length; j++) {
                if(dfs(board,arr,i,j,0)){
                    return true;
                }
            }
        }
        return false;
    }

    public boolean dfs(char[][] board,char[] arr,int i,int j,int index){
        //判斷邊界條件(中斷條件)
        if(i<0 || i>=board.length || j<0 || j>=board[0].length || board[i][j]!=arr[index]){
            return false;
        }
        //如果遍歷完成(結(jié)束條件)
        if(index == arr.length-1){
            return true;
        }
        //保存當(dāng)前表格里的字符
        char temp = board[i][j];
        //將走過(guò)的路徑設(shè)置成*,防止重復(fù)
        board[i][j] = '*';
        //繼續(xù)判斷上下左右四個(gè)方向
        boolean top  = dfs(board,arr,i-1,j,index+1);
        boolean bottom  = dfs(board,arr,i+1,j,index+1);
        boolean right  = dfs(board,arr,i,j+1,index+1);
        boolean left  = dfs(board,arr,i,j-1,index+1);
        //將之前替換的字符還原
        board[i][j] = temp;
        return top || bottom || right || left;
    }

每天進(jìn)步一點(diǎn)點(diǎn)~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赠堵,一起剝皮案震驚了整個(gè)濱河市小渊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茫叭,老刑警劉巖粤铭,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異杂靶,居然都是意外死亡梆惯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)吗垮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)垛吗,“玉大人,你說(shuō)我怎么就攤上這事烁登∏犹耄” “怎么了蔚舀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锨络。 經(jīng)常有香客問(wèn)我赌躺,道長(zhǎng),這世上最難降的妖魔是什么羡儿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任礼患,我火速辦了婚禮,結(jié)果婚禮上掠归,老公的妹妹穿的比我還像新娘缅叠。我一直安慰自己,他們只是感情好虏冻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布肤粱。 她就那樣靜靜地躺著,像睡著了一般厨相。 火紅的嫁衣襯著肌膚如雪领曼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天蛮穿,我揣著相機(jī)與錄音庶骄,去河邊找鬼。 笑死绪撵,一個(gè)胖子當(dāng)著我的面吹牛瓢姻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播音诈,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼幻碱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了细溅?” 一聲冷哼從身側(cè)響起褥傍,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喇聊,沒(méi)想到半個(gè)月后恍风,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡誓篱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年朋贬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窜骄。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锦募,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邻遏,到底是詐尸還是另有隱情糠亩,我是刑警寧澤滔以,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布做入,位于F島的核電站饱狂,受9級(jí)特大地震影響钥弯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垂寥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一颠黎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矫废,春花似錦盏缤、人聲如沸砰蠢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)台舱。三九已至律杠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竞惋,已是汗流浹背柜去。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拆宛,地道東北人嗓奢。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像浑厚,于是被迫代替她去往敵國(guó)和親股耽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 給定一個(gè) m x n 二維字符網(wǎng)格 board 和一個(gè)字符串單詞 word 钳幅。如果 word 存在于網(wǎng)格中物蝙,返回 ...
    吃虧是禍閱讀 153評(píng)論 0 1
  • 【leetcode】單詞搜索 題目: 給定一個(gè)二維網(wǎng)格和一個(gè)單詞,找出該單詞是否存在于網(wǎng)格中敢艰。 單詞必須按照字母順...
    程序員小2閱讀 520評(píng)論 0 1
  • LeetCode-79-單詞搜索(Word Search) 79. 單詞搜索[https://leetcode-c...
    蔣斌文閱讀 173評(píng)論 0 1
  • 來(lái)源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/word-s...
    xialu閱讀 160評(píng)論 0 0
  • 來(lái)源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/word-s...
    xialu閱讀 435評(píng)論 0 4