您的位置:首页 > 其它

Word Break

2016-05-23 16:47 169 查看
此题用dp解,初始化一个s.length()+1的布尔数组,当中[0]用于初始状态。

当中要明白的点是,肯定要从第一个字符开始匹配,那么遍历整个字典,每匹配了一个word,那对应的数组位置应该标为真值,没有匹配的位置仍保持假值。

依次循环,如果这个字符串整个都能匹配,则在字符布尔数组的最后位置应该为真。

public boolean wordBreak(String s, Set<String> wordDict) {

        boolean[] charArray = new boolean[s.length() + 1];

        charArray[0] = true;

        for (int i = 0; i < s.length(); i++) {

            if (!charArray[i]) {

                continue;

            }

            for (String str: wordDict) {

                int length = str.length();

                if (length + i > s.length()) {

                    continue;

                }

                int end = length + i;

                if (s.substring(i, end).equals(str)) {

                    charArray[end] = true;

                }

            }

        }

        return charArray[s.length()];

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: