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;
    }
}
相关推荐
之歆1 分钟前
Spring AI入门到实战到原理源码-MCP
java·人工智能·spring
知乎的哥廷根数学学派12 分钟前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
yangminlei21 分钟前
Spring Boot3集成LiteFlow!轻松实现业务流程编排
java·spring boot·后端
qq_3181215922 分钟前
互联网大厂Java面试故事:从Spring Boot到微服务架构的技术挑战与解答
java·spring boot·redis·spring cloud·微服务·面试·内容社区
J_liaty30 分钟前
Spring Boot整合Nacos:从入门到精通
java·spring boot·后端·nacos
阿蒙Amon1 小时前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
daidaidaiyu1 小时前
Spring IOC 源码学习 一文学习完整的加载流程
java·spring
666HZ6661 小时前
数据结构2.0 线性表
c语言·数据结构·算法
2***d8852 小时前
SpringBoot 集成 Activiti 7 工作流引擎
java·spring boot·后端
五阿哥永琪2 小时前
Spring中的定时任务怎么用?
java·后端·spring