• Java for LeetCode 140 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"].

    解题思路:

    参考上题思路二的解法,修改下代码,让其显示路径即可,JAVA实现如下:

    static public List<String> wordBreak(String s, Set<String> wordDict) {
    		List<String> list = new ArrayList<String>();
    		dfs(list, s, wordDict, new HashSet<String>(), new ArrayList<String>());
    		return list;
    	}
    
    	static public boolean dfs(List<String> list, String s, Set<String> dict,
    			Set<String> unmatch, List<String> alist) {
    		boolean isMatch=false;
    		for (String prefix : dict) {
    			if (s.equals(prefix)) {
    				alist.add(prefix);
    				StringBuilder sb = new StringBuilder();
    				for (String str : alist) {
    					sb.append(str);
    					sb.append(" ");
    				}
    				list.add(sb.substring(0, sb.length() - 1));
    				alist.remove(alist.size() - 1);
    				isMatch=true;
    				continue;
    			} else if (s.startsWith(prefix)) {
    				String suffix = s.substring(prefix.length());
    				if (!unmatch.contains(suffix)) {
    					alist.add(prefix);
    					if (!dfs(list, suffix, dict, unmatch, alist))
    						unmatch.add(suffix);
    					else isMatch=true;
    					alist.remove(alist.size() - 1);
    				}
    			}
    		}
    		return isMatch;
    	}
    
  • 相关阅读:
    cocos2d与cocos2d-X中的draw和update
    poj1673
    hdu2128之BFS
    常用的js效验
    OMCS的语音视频带宽占用
    UML类图详细介绍
    [置顶] 获取激活码,激活myeclipse
    CBO学习----03--选择率(Selectivity)
    notepad++ 文件对比插件
    永远不要在Linux 执行的 10 个最危险的命令
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4551337.html
Copyright © 2020-2023  润新知