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;
    }
}
相关推荐
金銀銅鐵5 分钟前
[Java] 用 Swing 生成一个最大公约数计算器(展示计算过程)
java·后端·数学
计算机学姐12 分钟前
基于SpringBoot的新闻管理系统【协同过滤推荐算法+可视化统计】
java·vue.js·spring boot·后端·spring·mybatis·推荐算法
2201_7578308718 分钟前
泛型的细节
java·开发语言·数据结构
一 乐27 分钟前
远程在线诊疗|在线诊疗|基于java和小程序的在线诊疗系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
缺点内向29 分钟前
Java:高效删除Excel中的空白行和列
java·开发语言·excel
pkowner37 分钟前
若依使用技巧
java
leoufung39 分钟前
贪心算法理论与应用——以股票买卖问题为例
算法·贪心算法
静若繁花_jingjing41 分钟前
DDD领域驱动设计实践_保险
java·开发语言
serendipity_hky44 分钟前
【微服务 - easy视频 | day04】Seata解决分布式事务
java·spring boot·分布式·spring cloud·微服务·架构