查找单词-算法(深度优先)

题目

给定一个二维数组与一个单词,数组中每个元素为大写字母,判断单词是否出现在数组中。

如二维数组:

char[][] map = {
 {'A', 'B', 'C', 'E'}, {'S', 'F', 'C', 'S'}, {'A', 'D', 'E', 'E'}};

目标单词:

ABCCEE

解题

深度优先,并且走过的标记一下

public class FindWordIn2DArrayTest {

  public static void main(String[] args) {
    char[][] map = {
  {'A', 'B', 'C', 'E'}, {'S', 'F', 'C', 'S'}, {'A', 'D', 'E', 'E'}};
    String target = "ABCCEE";

    System.out.println(isWordInMap(map, target));
  }

  private static boolean isWordInMap(char[][] map, String target) {
    for (int i = 0; i < map.length; i++) {
      for (int j = 0; j < map[i].length; j++) {
        if (dfs(map, i, j, target, 0)) {
          return true;
        }
      }
    }
    return false;
  }

  private static boolean dfs(char[][] map, int i, int j, String target, int k) {
    if (i < 0 || j < 0 || i >= map.length || j >= map[i].length || map[i][j] != target.charAt(k)) {
      return false;
    }
    if (k == target.length() - 1) {
      return true;
    }
    map[i][j] = '\0';
    boolean has = dfs(map, i + 1, j, target, k + 1)
        || dfs(map, i - 1, j, target, k + 1)
        || dfs(map, i, j + 1, target, k + 1)
        || dfs(map, i, j - 1, target, k + 1);
    return has;
  }
}

相关推荐

  1. 查找单词-算法深度优先

    2024-02-04 12:30:03       50 阅读
  2. 深度优先算法-DFS(算法篇)

    2024-02-04 12:30:03       26 阅读
  3. 深度学习优化算法

    2024-02-04 12:30:03       40 阅读
  4. C++中的深度优先搜索算法

    2024-02-04 12:30:03       54 阅读
  5. 深度优先搜索算法C实现

    2024-02-04 12:30:03       39 阅读
  6. 深度优先搜索(DFS)算法深入探索与实践

    2024-02-04 12:30:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-04 12:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-04 12:30:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-04 12:30:03       82 阅读
  4. Python语言-面向对象

    2024-02-04 12:30:03       91 阅读

热门阅读

  1. 前端学习02

    2024-02-04 12:30:03       46 阅读
  2. C/C++ - 类模板

    2024-02-04 12:30:03       49 阅读
  3. Elasticsearch重建索引-修改索引字段类型

    2024-02-04 12:30:03       63 阅读
  4. windows安装git与git配置

    2024-02-04 12:30:03       56 阅读
  5. protobuf 序列化协议之数据结构

    2024-02-04 12:30:03       47 阅读
  6. SpringBoot打包

    2024-02-04 12:30:03       40 阅读
  7. 旋复代赭石汤原方

    2024-02-04 12:30:03       57 阅读
  8. 计算机科学导论(2)计算机如何存储音频

    2024-02-04 12:30:03       127 阅读
  9. gogs 搭建私人git服务器遇到的问题汇总

    2024-02-04 12:30:03       52 阅读
  10. MongoDB实战 – 创建和删除数据库

    2024-02-04 12:30:03       54 阅读
  11. 【Soc级系统防御】基于IP的SoC设计中的安全问题

    2024-02-04 12:30:03       58 阅读