zoukankan      html  css  js  c++  java
  • [leetcode] Word Break2

    题目:(DP, Backtracing)

    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"].

    题解:


    一条经典的 DP+Backtracing的题。dp 部分就是word break的代码, 然后后面一段就是backtracing的代码。

    public class Solution {
        public boolean wordBreakcheck(String s, Set<String> dict) {
            if(s==null || s.length()==0)
                return true;
            boolean[] res = new boolean[s.length()+1];
            res[0] = true;
            for(int i=0;i<s.length();i++){
                StringBuilder str = new StringBuilder(s.substring(0,i+1));
                for(int j=0;j<=i;j++){
                    if(res[j] && dict.contains(str.toString())){
                        res[i+1] = true;
                        break;
                    }
                    str.deleteCharAt(0);
                }
            }
            return res[s.length()];
        }
        
        public ArrayList<String> wordBreak(String s, Set<String> dict) {  
            ArrayList<String> res = new ArrayList<String>();  
            if(s==null || s.length()==0)  
                return res;
            if(wordBreakcheck(s,dict))
                helper(s,dict,0,"",res);  
            return res;  
        }  
        
        private void helper(String s, Set<String> dict, int start, String item, ArrayList<String> res){  
            if(start==s.length()){  
                res.add(item);  
                return;  
            }
            
            StringBuilder str = new StringBuilder();  
            for(int i=start;i<s.length();i++){  
                str.append(s.charAt(i));  
                if(dict.contains(str.toString())){  
                    String newItem = new String();  
                    if(item.length()>0)
                        newItem = item + " " + str.toString();
                    else
                        newItem = str.toString();
                    helper(s,dict,i+1,newItem,res);  
                }  
            }  
        }
    }
    

      

  • 相关阅读:
    1.shell编程-变量的高级用法
    1.python简介
    1.numpy的用法
    1.MySQL(一)
    1.HTML
    1.Go-copy函数、sort排序、双向链表、list操作和双向循环链表
    1.Flask URL和视图
    1.Django自学课堂
    1.Django安装与运行
    ajax跨站请求伪造
  • 原文地址:https://www.cnblogs.com/fengmangZoo/p/4198067.html
Copyright © 2011-2022 走看看