2015年6月17日

开始刷Leetcode,然后第一题就TLE了……

今天开始刷leetcode,第一题:Word Break

判断给定的一个字符串能否被拆成字典里的词。

一开始不知道怎么想的,试图用二分加递归做,然后就LTE了……然后发现自己实在是蛋疼,长字符串拆去单词后的部分根本没必要和词典做对比,完全是受了例子的误导。

然后接下来就容易多了,代码是这样的:


class Solution:
    # @param s, a string
    # @param wordDict, a set
    # @return a boolean
    def wordBreak(self, s, wordDict):
        if not s or not wordDict:
            return False
       
        flags = [False for i in range(len(s) + 1)]
        flags[0] = True
       
        for s_len in range(1, len(s) + 1):
            for i in range(s_len):
                if flags[i] and s[i:s_len] in wordDict:
                    flags[s_len] = True
       
        return flags[len(s)]


当然,漏了flags[0] = True这句导致失败好几次我是不会随便乱说的……

没有评论: