题解 | #单词拆分(一)#

单词拆分(一)

http://www.nowcoder.com/practice/c0d32c1ce5744472a01b2351a2c2767f

简单思路:采用递归,每次把匹配到的前缀给去掉,然后进入下一层次的递归。直到把s变成空串,说明能够组成该单词。否则不能组成该单词。

//该版本仅能通过牛客的测试案例,但仍需完善,比如当测试用例是
//"nowcoder",["no","now","coder"]时,则会返回错误的结果,原因是没有回溯。
import java.util.*;
public class Solution {
    public boolean wordDiv (String s, String[] dic) {
        if(s.equals(""))return true;
        for(int i=0;i<=s.length();++i){
            for(int j=0;j<dic.length;++j){
                if(dic[j].equals(s.substring(0,i))){
                    return wordDiv(s.substring(i),dic);
                }
            }
        }
        return false;
    }
}
//这个版本增加了回溯功能,可以正确通过所有用例,但是仍有优化空间,至于具体如何优化,
//请读者自行思考(如何解决测试用例"11111111111...",["1","11"...]这个超时的问题?(考虑哈希表))。
import java.util.*;
public class Solution {
    boolean isExist;
    public boolean wordDiv (String s, String[] dic) {
        if(s.equals("")){
            isExist = true;
            return true;
        }
        boolean res = false;
        for(int i=0;i<=s.length();++i){
            for(int j=0;j<dic.length;++j){
                if(dic[j].equals(s.substring(0,i))){
                    res =  isExist||wordDiv(s.substring(i),dic);
                }
            }
        }
        return res;
    }
}
全部评论

相关推荐

冰皮月饼_FLORRIEEE:你是准备投产品嘛?可以重新整理一下实习的bulletpoint,侧重描述你的工作所带来的结果收益,不要只写泛泛的内容(比如改写通过xx数据分析,提升xx),产品的价值并不在处理和分析数据的过程
点赞 评论 收藏
分享
26牛牛不会梦到感谢信:羡慕离职了还能吃吗现在就赶回去
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务