给出一个二维字符 数组和一个单词,判断单词是否在数组中出现, 单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻 。同一单元格的字母不能多次使用。 数据范围: 0 < 行长度 <= 100 0 < 列长度 <= 100 0 < 单词长度 <= 1000 例如: 给出的数组为["XYZE","SFZS","XDEE"]时, 对应的二维字符数组为 : 若单词为"XYZZED"时,应该返回 true, 也即: 若单词为"SEE"时,应该返回 true, 也即: 若单词为"XYZY"时,应该返回 false。-笔试面试资料

这是qklbishe.com第18923 篇笔试面试资料
提供答案分析,通过本文《给出一个二维字符 数组和一个单词,判断单词是否在数组中出现, 单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻 。同一单元格的字母不能多次使用。

数据范围: 0 < 行长度 <= 100 0 < 列长度 <= 100 0 < 单词长度 <= 1000

例如: 给出的数组为["XYZE","SFZS","XDEE"]时, 对应的二维字符数组为 :
若单词为"XYZZED"时,应该返回 true, 也即:
若单词为"SEE"时,应该返回 true, 也即:
若单词为"XYZY"时,应该返回 false。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

给出一个二维字符数组和一个单词,判断单词是否在数组中出现,
单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻。同一单元格的字母不能多次使用。
数据范围:
0 < 行长度 <= 100
0 < 列长度 <= 100
0 < 单词长度 <= 1000
例如:
给出的数组为["XYZE","SFZS","XDEE"]时,
对应的二维字符数组为
给出一个二维字符 数组和一个单词,判断单词是否在数组中出现,    单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻 。同一单元格的字母不能多次使用。            数据范围:    0 &lt; 行长度 &lt;= 100    0 &lt; 列长度 &lt;= 100      0 &lt; 单词长度 &lt;= 1000            例如:      给出的数组为[&quot;XYZE&quot;,&quot;SFZS&quot;,&quot;XDEE&quot;]时,    对应的二维字符数组为 :          若单词为&quot;XYZZED&quot;时,应该返回 true,    也即:       若单词为&quot;SEE&quot;时,应该返回 true,    也即:       若单词为&quot;XYZY&quot;时,应该返回 false。
若单词为"XYZZED"时,应该返回 true,
也即:
给出一个二维字符 数组和一个单词,判断单词是否在数组中出现,    单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻 。同一单元格的字母不能多次使用。            数据范围:    0 &lt; 行长度 &lt;= 100    0 &lt; 列长度 &lt;= 100      0 &lt; 单词长度 &lt;= 1000            例如:      给出的数组为[&quot;XYZE&quot;,&quot;SFZS&quot;,&quot;XDEE&quot;]时,    对应的二维字符数组为 :          若单词为&quot;XYZZED&quot;时,应该返回 true,    也即:       若单词为&quot;SEE&quot;时,应该返回 true,    也即:       若单词为&quot;XYZY&quot;时,应该返回 false。
若单词为"SEE"时,应该返回 true,
也即:
给出一个二维字符 数组和一个单词,判断单词是否在数组中出现,    单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻 。同一单元格的字母不能多次使用。            数据范围:    0 &lt; 行长度 &lt;= 100    0 &lt; 列长度 &lt;= 100      0 &lt; 单词长度 &lt;= 1000            例如:      给出的数组为[&quot;XYZE&quot;,&quot;SFZS&quot;,&quot;XDEE&quot;]时,    对应的二维字符数组为 :          若单词为&quot;XYZZED&quot;时,应该返回 true,    也即:       若单词为&quot;SEE&quot;时,应该返回 true,    也即:       若单词为&quot;XYZY&quot;时,应该返回 false。
若单词为"XYZY"时,应该返回 false。
Java

给出一个二维字符 数组和一个单词,判断单词是否在数组中出现,    单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻 。同一单元格的字母不能多次使用。            数据范围:    0 &lt; 行长度 &lt;= 100    0 &lt; 列长度 &lt;= 100      0 &lt; 单词长度 &lt;= 1000            例如:      给出的数组为[&quot;XYZE&quot;,&quot;SFZS&quot;,&quot;XDEE&quot;]时,    对应的二维字符数组为 :          若单词为&quot;XYZZED&quot;时,应该返回 true,    也即:       若单词为&quot;SEE&quot;时,应该返回 true,    也即:       若单词为&quot;XYZY&quot;时,应该返回 false。 零葬

深度优先搜索,每层都尝试4个方向,有一个方向搜索成功了就表示矩阵中存在这个单词。

import java.util.*;   public class Solution {     /**      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可      *      *       * @param board string字符串一维数组       * @param word string字符串       * @return bool布尔型      */     int[] dx = new int[]{-1, 1, 0, 0};     int[] dy = new int[]{0, 0, -1, 1};     public boolean exist (String[] board, String word) {         // write code here         char[][] grid = new char[board.length][board[0].length()];         for(int i = 0; i < board.length; i++){             grid[i] = board[i].toCharArray();         }         boolean[][] visited = new boolean[grid.length][grid[0].length];         for(int i = 0; i < grid.length; i++){             for(int j = 0; j < grid[0].length; j++){                 if(word.charAt(0) == grid[i][j]){                     if(dfs(grid, word, 0, i, j, visited)) return true;                 }             }         }         return false;     }          private boolean dfs(char[][] grid, String word, int depth, int x, int y, boolean[][] visited) {         // 所有字符判断完了,返回true         if(depth == word.length()) {             return true;         }         // 越界或访问过或字符不等,返回false         if(x < 0 || x >= grid.length || y < 0 || y >= grid[0].length || visited[x][y] || grid[x][y] != word.charAt(depth)){             return false;         }         // 尝试4个方向,有一个成功就行         visited[x][y] = true;         for(int i = 0; i < 4; i++){             if(dfs(grid, word, depth + 1, x + dx[i], y + dy[i], visited)){                 return true;             }         }         // 回溯         visited[x][y] = false;         return false;     } }

今天 21:13:21 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给出一个二维字符 数组和一个单词,判断单词是否在数组中出现, 单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻 。同一单元格的字母不能多次使用。 数据范围: 0 < 行长度 <= 100 0 < 列长度 <= 100 0 < 单词长度 <= 1000 例如: 给出的数组为["XYZE","SFZS","XDEE"]时, 对应的二维字符数组为 : 若单词为"XYZZED"时,应该返回 true, 也即: 若单词为"SEE"时,应该返回 true, 也即: 若单词为"XYZY"时,应该返回 false。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情