leetcode 79. 单词搜索

2023.10.16

本题使用回溯法解决,回溯开头先判断i、j是否越界 and 字符是否不匹配。 是的话则直接返回false。 否则,开始回溯判断,后面的字符是否都相等,为了防止矩阵的字符重复使用,回溯前,需要将原来的字符用'#'代替,回溯完再换回来。 java代码如下:

java 复制代码
class Solution {
    private boolean backtrating(char[][] board,char[] word,int i,int j,int k){
        if(i < 0 || i >= board.length || j < 0 || j >= board[0].length || board[i][j] != word[k]) return false;//越界或者字母不匹配
        if(k == word.length-1) return true;
        //两字母匹配 开始回溯
        char temp = board[i][j];
        board[i][j] = '#';
        boolean ans = backtrating(board,word,i+1,j,k+1) || backtrating(board,word,i-1,j,k+1) ||
                      backtrating(board,word,i,j+1,k+1) || backtrating(board,word,i,j-1,k+1);
        board[i][j] = temp;
        return ans;
    }

    public boolean exist(char[][] board, String word) {
        char[] words = word.toCharArray();
        for(int i=0; i<board.length; i++){
            for(int j=0; j<board[0].length; j++){
                if(backtrating(board,words,i,j,0)) return true;
            }
        }
        return false;
    }
}
相关推荐
a587696 分钟前
消息队列(MQ)高级特性深度剖析:详解RabbitMQ与Kafka
java·分布式·面试·kafka·rabbitmq·linq
熊文豪10 分钟前
【华为OD】区块链文件转储系统
算法·华为od·区块链
塔中妖11 分钟前
【华为OD】Linux发行版的数量
linux·算法·华为od
代码雕刻家11 分钟前
3.1.Maven-课程介绍
java·maven
熊文豪12 分钟前
【华为OD】阿里巴巴找黄金宝箱
算法·华为od
li357417 分钟前
深入理解:MQ监听类 vs Spring事件监听类 —— 区别、用法与适用场景全解析
java·数据库·spring
bestadc20 分钟前
LeetCode 几道 Promises 和 Time 的题目
javascript·算法·leetcode
墨染点香27 分钟前
LeetCode 刷题【71. 简化路径】
算法·leetcode·职场和发展
知彼解己29 分钟前
【算法】四大基础数据结构
数据结构·算法
灵感蛙30 分钟前
《苍穹外卖》项目日记_Day7
java·spring boot·redis