79. Word Search -Medium

Question

Given a 2D board and a word, find if the word exists in the grid.

The word can be constructed from letters of sequentially adjacent cell, where “adjacent” cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.

给出一个二维的模板网格和一个单词,请你找出这个单词是否在模板中存在。在搜索过程中,这个单词可以通过相邻网格(相邻的垂直水平网格都可以)来构造。同一网格的字母只能使用一次

Example

Given board =

[
[‘A’,’B’,’C’,’E’],
[‘S’,’F’,’C’,’S’],
[‘A’,’D’,’E’,’E’]
]

word = “ABCCED”, -> returns true,
word = “SEE”, -> returns true,
word = “ABCB”, -> returns false.

Solution

  • 回溯解。我们需要分别判断以网格的任意一点作为起始点进行搜索能否得到该word单词,因为同一个网格不能走两次,所以在搜索过程中需要标记已搜索过的网格,为了不额外增加空间,我们可以改变网格元素内容代表已搜索过。

    public class Solution {
        public boolean exist(char[][] board, String word) {
            // 分别以board的不同元素作为搜索起点进行搜索
            for(int i = 0;i < board.length; i++){
                for(int j = 0;j < board[i].length; j++){
                    if(backtracking(board, word, i, j, 0)) return true;
                }
            }
            return false;
        }
    
        /**
         * 思路:检测以board[index_x][index_y]为头的序列是否能够搜索到word单词。每次检测当前board元素是否能够匹配word的当前元素,
         *       如果能够能够匹配,则递归进行下一个字母的搜索,否则跳过
         * @param board:保存字母的模板
         * @param word:要搜索的单词
         * @param index_x:board的x轴索引
         * @param index_y:board的y轴索引
         * @param index_w:要搜索的单词的当前字符索引
         * @return:是否能够搜索到word单词
         */
        public boolean backtracking(char[][] board, String word, int index_x, int index_y, int index_w){
            // 如果每个字母都已经被搜索到了,则返回true
            if(index_w == word.length()) return true;
    
            // 如果搜索点走出了board边界则回退
            if(index_x < 0 || index_y < 0 || index_x >= board.length || index_y >= board[0].length) return false;
    
            // 如果board当前元素不能搜索到该字母,则回退
            if(board[index_x][index_y] != word.charAt(index_w)) return false;
    
            // 到了这里代表当前字母已经搜索到了,接下去搜索下一个字母
            // 保存当前board元素的值
            char temp = board[index_x][index_y];
            // 将该元素改为"*"代表该位置已经搜索过了
            board[index_x][index_y] = '*';
            // 分别向4个方向走,只要有一个方向能够搜索到下个字母就返回true
            boolean isexist = backtracking(board, word, index_x + 1, index_y, index_w + 1) ||
                    backtracking(board, word, index_x, index_y + 1, index_w + 1) ||
                    backtracking(board, word, index_x - 1, index_y, index_w + 1) ||
                    backtracking(board, word, index_x, index_y - 1, index_w + 1);
            // 每次搜索完都将原来的值恢复以便下一次搜索
            board[index_x][index_y] = temp;
            return isexist;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 这个错误是由ESLint插件引起的,它要求组件名称应该是多个单词组成的。\[1\]具体来说,它指出了组件名称"instrument"不符合这个规则。\[3\]为了解决这个问题,有几种方法可以尝试。首先,你可以将组件名称改为多个单词的形式,比如"instrumentPanel"。\[3\]另外,你也可以在ESLint配置文件中禁用这个规则,但这可能会导致其他潜在问题的出现。\[3\]最后,你还可以考虑使用其他命名约定,比如使用短横线连接单词,例如"instrument-panel"。\[3\]无论你选择哪种方法,都应该确保组件名称具有描述性并且易于理解。 #### 引用[.reference_title] - *1* [ESLint: Component name &quot;... should always be multi-word. (vue/multi-word-component-names)](https://blog.csdn.net/m0_58961367/article/details/131432867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue eslint报错:Component name “index“ should always be multi-word.eslintvue/multi-word-component-...](https://blog.csdn.net/qq_51066068/article/details/125990215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【vue eslint】报错Component name “xxxxx“ should always be multi-word.eslintvue/四种解决方案](https://blog.csdn.net/guoxuying/article/details/128192460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值