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;
    }
}
相关推荐
XiYang-DING2 分钟前
【Java】从源码深入理解HashMap和TreeMap
java·开发语言
七颗糖很甜6 分钟前
基于 OpenCV 的 FY2 云顶图云块追踪算法实现
人工智能·opencv·算法
__Wedream__7 分钟前
NTIRE 2026 Challenge on Efficient Super-Resolution——冠军方案解读
人工智能·深度学习·算法·计算机视觉·超分辨率重建
FL162386312911 分钟前
基于深度学习mediape实现人员跌倒人体姿势跌倒检测算法源码+说明文件
人工智能·深度学习·算法
wangwangmoon_light12 分钟前
1.23 LeetCode总结(树)_一般树
算法·leetcode·职场和发展
若水不如远方12 分钟前
一文讲透单点登录原理(SSO):从同域共享到跨域票据
java·后端
不懂的浪漫12 分钟前
mqtt-plus 架构解析(七):动态订阅与重连恢复,为什么能走同一条协调路径
java·物联网·mqtt·架构
被考核重击14 分钟前
基础算法学习
学习·算法
无巧不成书021816 分钟前
Unicode编码机制全解析:从核心原理到Java 实战
java·开发语言·java字符编码·unicode 15.1码点
小O的算法实验室16 分钟前
2026年ASOC,学习驱动人工蜂群算法+移动机器人多目标路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进