Coursera Algorithm Ⅱ week4 编程作业 Boggle

代码地址:https://github.com/RedemptionC/CourseraAlgorithms/tree/master/boggle

本题基本与leetcode212 单词搜索Ⅱ(https://leetcode-cn.com/problems/word-search-ii/)相同,实现trie的时候还可以把208 实现trie(208. 实现 Trie (前缀树))做了~

要求是给出一个board,上面每一个格子之上都有一个字母,题目会给出一个字典,里面有一些预定的单词,我们要做的是找出board相邻(上下左右对角线)的格子上的字母,如果能组成字典里的单词,就计分

所以本质上是个搜索问题:我们可以建立一个set,把字典里的单词都加入,然后在board上搜索,如果当前连成的单词在字典里,就积分

关键在于,要实现高效的查字典,我们不能直接用hashset里的contains,应该用startwith这种函数,一旦字典里没有当前这种字符串作为开头的单词,马上返回

这里我们要实现trie(字典树),来实现高效的查询

因为本题里的元素都是大写字母,只有26种,为了简单起见,我实现的是26 way trie

差不多就是这种:

上代码:

Trie

public class Trie {
    private class Node {
        private Integer value;
        private Node[] next = new Node[26];
    }

    private Node root;
    private int count;// for setting value

    /** Initialize your data structure here. */
    public Trie() {
        root = new N
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值