一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1657|回复: 2
收起左侧

[算法题] lintcode word break一问

[复制链接] |试试Instant~ |关注本帖
oio14644 发表于 2015-6-3 03:04:50 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 oio14644 于 2015-6-3 03:19 编辑

file:///C:/Users/WEIWAN~1/AppData/Local/Temp/%W@GJ$ACOF(TYDYECOKVDYB.pnghttp://www.lintcode.com/en/problem/word-break/
为什么写成for (int j = 0; j < i ;j++)  就不能通过oj,而写成for (int j = i - 1; j >= 0 ;j--)就可以
看起来是一样的
我刚刚试了leetcode的oj,两个都能通过

是不是lintcode的bug呢?

求指点

public boolean wordBreak(String s, Set<String> dict) {
                int len = s.length();
        boolean[] dp = new boolean[len + 1];
        // Last test case is SICK
        // without this validation it wont pass.
        int[] count = new int[26];
        //这句意思是统计所有在dict中的字符串里面包含的字符
        for (String ss : dict) {
            for (int i = 0; i < ss.length(); i++) {
                count[ss.charAt(i) - 'a']++;
            }
        }
        //就是如果s里面有dict里面没出现的字符直接判断false
        for (int i = 0; i < s.length(); i++) {
            if (count[s.charAt(i) - 'a'] == 0) {
                return false;
            }
        }

        dp[0] = true;
        for (int i = 1; i <= len; i++) {
            for (int j = i - 1; j >= 0 ;j--) {
            //for (int j = 0; j < i ;j++) { //cannot pass online judge
                if (dp[j] && dict.contains(s.substring(j, i))) {
                                        dp[ i ] = true;
                                        break;
                                }
            }
        }
        return dp[len];
    }

stellari 发表于 2015-6-3 13:12:08 | 显示全部楼层
本来应该是一样的。但是在实际使用当中,“word”一般来说都不太长,比如最长为10。所以当待查找的字符串很长,比如10000时,倒着找的话循环10次就可以确定是否能够找到。而正着找你至少要循环9990次才能开始确定字符串最后是否是一个word。

反之,如果大部分的词都很长,比如长度都超过5000,那么从头开始搜则要快些了。
回复 支持 反对

使用道具 举报

johnwan 发表于 2015-11-10 07:14:08 | 显示全部楼层
stellari 发表于 2015-6-3 13:12
本来应该是一样的。但是在实际使用当中,“word”一般来说都不太长,比如最长为10。所以当待查找的字符串很 ...

但是反过来想,当待查找的字符串很短,我们循环10次就可以跳出这层循环了,而如果反向找,则需要找9990次。所以我认为是故意出了这么一组数据来测试而已。
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-8 04:24

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表