`
hcx2013
  • 浏览: 88768 次
社区版块
存档分类
最新评论

Word Break II

 
阅读更多

Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.

Return all such possible sentences.

For example, given
s = "catsanddog",
dict = ["cat", "cats", "and", "sand", "dog"].

A solution is ["cats and dog", "cat sand dog"].

 

public class Solution {
    public List<String> wordBreak(String s, Set<String> wordDict) {
        ArrayList<String> res = new ArrayList<>();
        if (s == null || s.length() == 0) {
        	return res;
        }
        if (wordBreakcheck(s, wordDict)) {
        	solve(s, wordDict, 0, "", res);
        }
        return res;
    }

	private void solve(String s, Set<String> wordDict, int start, String item,
			ArrayList<String> res) {
		if (start >= s.length()) {
			res.add(item);
			return;
		}
		StringBuffer stringBuffer = new StringBuffer();
		for (int i = start; i < s.length(); i++) {
			stringBuffer.append(s.charAt(i));
			if (wordDict.contains(stringBuffer.toString())) {
				String tmp = new String();
				if (item.length() > 0) {
					tmp = item + " " + stringBuffer.toString();
				} else {
					tmp = stringBuffer.toString();
				}
				solve(s, wordDict, i+1, tmp, res);
			}
		}
	}

	private boolean wordBreakcheck(String s, Set<String> wordDict) {
		if (s == null || s.length() == 0) {
			return true;
		}
		boolean[] dp = new boolean[s.length()+1];
		dp[0] = true;
		for (int i = 0; i < s.length(); i++) {
			StringBuffer stringBuffer = new StringBuffer(s.substring(0, i+1));
			for (int j = 0; j <= i; j++) {
				if (dp[j] && wordDict.contains(stringBuffer.toString())) {
					dp[i+1] = true;
					break;
				}
				stringBuffer.deleteCharAt(0);
			}
		}
		return dp[s.length()];
	}
}

 

分享到:
评论

相关推荐

    LintCode 582: Word Break II

    Word Break II Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word. Return all such possible sentences. Example Example 1...

    webfrom-列表文本内容自动换行 word-break-keep-all;word-wrap-n.pdf

    &lt;HeaderStyle HorizontalAlign="Center"&gt;&lt;/HeaderStyle&gt; &lt;ItemStyle CssClass="dxgv"&gt;&lt;/ItemStyle&gt; ... myDataGrid_d.Attributes.Add("style", "word-break:keep-all;word-wrap:normal");

    css中强制换行word-break、word-wrap、white-space区别实例说明

    复制代码代码如下:”c1″&gt;safjaskflasjfklsajfklasjflksajflksjflkasfdsafdsfksafj&lt;/div&gt;&lt;div class=c1&gt;This is all English. This is all English. This is all English.&lt;/div&gt;&lt;div class=c1&gt;全是中文的情况。...

    python-leetcode题解之140-Word-Break-II

    python python_leetcode题解之140_Word_Break_II

    word-break:break-all和word-wrap:break-word区别总结

    `word-break:break-all` 和 `word-wrap:break-word` 是CSS中用于控制文本换行的两个属性,它们都有各自的特点和适用场景。 首先,`word-break:break-all` 的作用是在任何可能的位置强制进行单词内部的换行。这意味...

    前端开源库-breakword

    **前端开源库-breakword** `breakword` 是一个专门针对前端开发的开源库,它的主要功能是处理文本断行问题,特别是在多语言环境下确保文本在指定长度内正确断开,保持良好的显示效果。这个库的核心在于它能计算字符...

    js-leetcode题解之140-word-break-ii.js

    javascript js_leetcode题解之140-word-break-ii.js

    oj题.zip

    4. **140.py** - 可能是LeetCode的140题,"Word Break II"(单词拆分II),这是一道动态规划问题,需要构建一个动态规划数组来解决。 5. **139.py** - 这可能是LeetCode的139题,"Word Break"(单词拆分),与140题...

    LeetCode题解 - Java语言实现-181页.pdf

    5. Word Break II 单词断词II是一个变体的问题,要求将字符串断词为单词,并且可以使用动态规划或Trie树来解决该问题。 6. Word Ladder 单词梯是一个字符串问题,要求将一个单词转换为另一个单词,并且每次转换...

    LeetCode题解(java语言实现).pdf

    * Word Break、Word Break II:该题目要求将字符串分割成单词,实现方法使用了动态规划和回溯算法。 * Word Ladder:该题目要求将一个单词转换成另一个单词,实现方法使用了广度优先搜索算法。 二、树和图 * ...

    浅析word-break work-wrap的区别

    object.style.wordBreak="keep-all"   值 描述 normal 使用浏览器默认的换行规则。 break-all 允许在单词内换行。 keep-all 只能在半角空格或连字符处换行。 兼容性: 举个栗子: CSS Co

    word-wrap与word-break 属性的概述及浏览器默认处理

    本文主要探讨了两个与文本换行密切相关的CSS属性:`word-wrap` 和 `word-break`,以及浏览器对它们的默认处理方式。 一、浏览器默认处理文本换行 默认情况下,浏览器采用`word-wrap: normal`策略,这意味着当一行...

    CSS word-wrap同word-break的区别

    兼容 IE 和 FF 的换行 CSS 推荐样式 最好的方式是 word-wrap:break-word; overflow:hidden; 而不是 word-wrap:break-word; word-break:break-all; 也不是 word-wrap:break-word; overflow:auto; 在 IE 下没有任何...

    CSS属性探秘系列(一):word-break与word-wrap

    在本文中,我们要深入探讨的两个CSS属性是word-break与word-wrap。 首先,我们来看看浏览器的自动换行功能。浏览器在显示文本时会自动在容器(如浏览器窗口或div元素)的右端进行换行。换行的规则根据文本类型有所...

    css word-break word-wrap 前台显示自动换行

    `word-break` 和 `word-wrap` 是两个非常重要的CSS属性,它们主要用于处理文本内容在容器内的换行规则,特别是在处理非标准长度的单词或字符串时。在描述中提到的场景是在一个`table`元素中应用这些样式,以确保内容...

    uber leetcode

    #### 一、Word Break II - **知识点:**动态规划、回溯算法。 - **题目描述:**给定一个非空字符串s和一个包含非空单词列表的词典wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。...

    python-leetcode题解之139-Word-Break

    python python_leetcode题解之139_Word_Break

Global site tag (gtag.js) - Google Analytics