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;
    }
}
相关推荐
不会就选b6 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
EatFan6 小时前
Spring Boot 4 落地观察:从 yudao-cloud、matecloud、JPower 看国产脚手架的升级路线与迁移清单
java·spring boot·后端·spring cloud·微服务·后端开发·jdk 21
Maiko Star7 小时前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
现任明教教主~9 小时前
Thinkphp站群蜘蛛池SaaS系统YanyvSEO含多用户/积分/六大引擎计费/易支付对接
java·开发语言·spring
一条破秋裤9 小时前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维
Cccp.1239 小时前
【leetcode】(七)前缀树和贪心算法
数据结构·leetcode·贪心算法
千里码aicood9 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
布吉岛的石头9 小时前
Java 程序员第 49 阶段5:BERT 预训练目标 MLM+NSP 的工程含义
java·人工智能·深度学习·bert·transformer
做cv的小昊10 小时前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型