题解 | #牛群定位系统#

牛群定位系统

https://www.nowcoder.com/practice/d808aaa4c13c4d38bff333aa796e6a1e

知识点:dfs

思路:可以 StringBuilder 来动态构建字符串。我们遍历矩阵中的每个位置,并以该位置作为起点进行深度优先搜索。在搜索的过程中,我们构建当前的字符串,并与给定的单词列表进行匹配。如果匹配成功,我们将相应的单词标记为找到,并最终将标记为找到的单词加入结果列表中

编程语言:java

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param board char字符型二维数组
     * @param words string字符串一维数组
     * @return string字符串一维数组
     */
    int[] dx = {-1, 0, 1, 0};
    int[] dy = {0, -1, 0, 1};

    public String[] findWords(char[][] board, String[] words) {
        int n = board.length;
        int m = board[0].length;
        Map<String, Integer> mp = new HashMap<>();
        for (String s : words) {
            mp.put(s, 0);
        }

        List<String> res = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                StringBuilder sb = new StringBuilder();
                dfs(sb, i, j, board, mp);
            }
        }

        for (String s : words) {
            if (mp.get(s) == 1) {
                res.add(s);
            }
        }

        return res.toArray(new String[0]);
    }

    private void dfs(StringBuilder sb, int x, int y, char[][] board,
                     Map<String, Integer> mp) {
        int n = board.length;
        int m = board[0].length;

        if (sb.length() > 12) return;

        sb.append(board[x][y]);
        String str = sb.toString();
        if (mp.containsKey(str)) {
            mp.put(str, 1);
        }

        for (int i = 0; i < 4; i++) {
            int nx = x + dx[i];
            int ny = y + dy[i];
            if (nx >= 0 && ny >= 0 && nx < n && ny < m &&
                    Character.isAlphabetic(board[nx][ny])) {
                dfs(sb, nx, ny, board, mp);
            }
        }

        sb.deleteCharAt(sb.length() - 1);
    }
}

全部评论

相关推荐

感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇&nbsp;延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗&nbsp;就业数据都在造假,真实的就业困难不去解决&nbsp;一个个真是好样的
从今天开始狠狠卷JV...:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务