leetcode212. 單詞搜索 II

      網(wǎng)友投稿 668 2022-05-28

      給定一個二維網(wǎng)格?board?和一個字典中的單詞列表 words,找出所有同時在二維網(wǎng)格和字典中出現(xiàn)的單詞。

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

      示例:

      輸入:

      words = ["oath","pea","eat","rain"] and board =

      [

      ['o','a','a','n'],

      ['e','t','a','e'],

      ['i','h','k','r'],

      ['i','f','l','v']

      ]

      輸出:?["eat","oath"]

      說明:

      你可以假設(shè)所有輸入都由小寫字母 a-z?組成。

      思路:上一道題改一下,把每一個單詞都判斷一下即可。

      class Solution {

      private boolean[][] marked;

      // x-1,y

      // x,y-1 x,y x,y+1

      // x+1,y

      private int[][] direction = {{-1, 0}, {0, -1}, {0, 1}, {1, 0}};

      // 盤面上有多少行

      private int m;

      // 盤面上有多少列

      private int n;

      private String word;

      private char[][] board;

      //答案數(shù)組

      Set ans=new HashSet<>();

      //判斷一個字符

      public List findWords(char[][] board, String[] words) {

      m = board.length;

      if (m == 0)return null;

      n = board[0].length;

      marked = new boolean[m][n];

      this.board = board;

      for(String s:words){

      for (int i = 0; i < m; i++)

      for (int j = 0; j < n; j++)

      marked[i][j]=false;

      this.word = s;

      for (int i = 0; i < m; i++)

      for (int j = 0; j < n; j++)

      if (dfs(i, j, 0))

      ans.add(s);

      }

      List ansList=new ArrayList<>(ans);

      Collections.sort(ansList);

      return ansList;

      }

      private boolean dfs(int i, int j, int start) {

      if (start == word.length() - 1) {

      return board[i][j] == word.charAt(start);

      }

      if (board[i][j] == word.charAt(start)) {

      marked[i][j] = true;

      for (int k = 0; k < 4; k++) {

      int newX = i + direction[k][0];

      int newY = j + direction[k][1];

      if (newX >= 0 && newX < m && newY >= 0 && newY < n && !marked[newX][newY]) {

      if (dfs(newX, newY, start + 1)) {

      return true;

      }

      }

      }

      marked[i][j] = false;

      }

      return false;

      leetcode212. 單詞搜索 II

      }

      }

      數(shù)據(jù)結(jié)構(gòu)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:C語言總結(jié)_字符串練全方位練習(xí)
      下一篇:python+selenium方法大全
      相關(guān)文章
      在线亚洲高清揄拍自拍一品区| 在线观看亚洲专区| 亚洲AV成人一区二区三区观看| 久久久亚洲AV波多野结衣 | 亚洲熟妇丰满多毛XXXX| www.亚洲色图.com| 亚洲性在线看高清h片| 亚洲成a∨人片在无码2023| 色老板亚洲视频免在线观 | 国产av无码专区亚洲国产精品| 亚洲AV无码片一区二区三区| 亚洲精品无码久久久久YW| 亚洲乱码av中文一区二区| 亚洲欧美日韩一区二区三区在线| 日本亚洲色大成网站www久久| 亚洲大成色www永久网址| 亚洲综合av一区二区三区不卡| 亚洲精品123区在线观看| 亚洲精品123区在线观看| 亚洲欧美日韩中文高清www777| 亚洲av无码无线在线观看| 国产精品亚洲lv粉色| 国产亚洲日韩在线a不卡| 亚洲精品视频免费观看| 亚洲日韩人妻第一页| 亚洲无人区一区二区三区| 久久亚洲高清综合| 亚洲国产无套无码av电影| 国产V亚洲V天堂A无码| 亚洲丝袜美腿视频| 亚洲精品国产啊女成拍色拍| 亚洲免费人成视频观看| 亚洲色大情网站www| 亚洲.国产.欧美一区二区三区| 亚洲高清偷拍一区二区三区| 在线精品亚洲一区二区三区| 亚洲精品无码久久久久去q| 亚洲AV电影院在线观看| 亚洲毛片在线免费观看| 亚洲中文字幕久久久一区| 蜜芽亚洲av无码一区二区三区|