zoukankan      html  css  js  c++  java
  • leetcode — word-break

    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Source : https://oj.leetcode.com/problems/word-break/
     *
     *
     * Given a string s and a dictionary of words dict, determine if s can be segmented
     * into a space-separated sequence of one or more dictionary words.
     *
     * For example, given
     * s = "leetcode",
     * dict = ["leet", "code"].
     *
     * Return true because "leetcode" can be segmented as "leet code".
     *
     */
    public class WordBreak {
    
        /**
         * 判断给定的字符串是否能分割为多个单词,每个单词都包含在给定的字典中
         *
         * 1. 使用DFS,如果能到达字符串最后,说明可以break
         * 2. 题目中只是判断是否的问题,并不需要求出具体break的方法,对于是否的问题可以使用DP来解决
         *
         * dp[i]:表示str[i-1]能否被break,比如dp[1]表示str[0:0]能否被break
         * dp[0] = true
         * dp[i] = true,当:
         * 存在0 <= k <= i-1, dp[k] = true, 并且tr[k:i-1] 存在dic中
         *
         * @param str
         * @param dic
         * @return
         */
        public boolean wordBreak (String str, Set<String> dic) {
            boolean[] dp = new boolean[str.length()+1];
            dp[0] = true;
            for (int i = 0; i < str.length(); i++) {
                for (int j = i; j > -1; j--) {
                    if (dp[j] && dic.contains(str.substring(j, i+1))) {
                        dp[i + 1] = true;
                        break;
                    }
                }
            }
            return dp[str.length()];
        }
    
    
        public static void main(String[] args) {
            WordBreak wordBreak = new WordBreak();
            String[] dicStr = new String[]{"leet", "code"};
            boolean result = wordBreak.wordBreak("leetcode", new HashSet<String>(Arrays.asList(dicStr)));
            System.out.println(result + " == true");
        }
    }
    
  • 相关阅读:
    书单
    x&(x1)表达式的意义
    约瑟夫环,杀人游戏(静态循环链表实现)
    我的第一个动态规划程序(试图用递归求斐波拉契数)
    NYOJ 2题 括号配对问题
    为什么 C++不叫作++C? o(∩_∩)o
    文字常量区,字符串常量
    括号匹配(栈实现)
    Mybatis的逆向工程(generator)
    Mybatis学习一(介绍/举例/优化)
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7902539.html
Copyright © 2011-2022 走看看