博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】Word Break(python)
阅读量:4068 次
发布时间:2019-05-25

本文共 1165 字,大约阅读时间需要 3 分钟。

思路是这样的,我们从第一个字符开始向后依次找,直到找到一个断句的地方,使得当前获得的子串在dict中,若找到最后都没找到,那么就是False了。

在找到第一个后,接下来找下一个断句处,当然是从第一个断句处的下一个字符开始找连续的子串,但是这时与第一个就稍有不同,比如说word=‘ab’, dict={ 'a', ab', ...},在找到a后,接下来处理的是b,我们发现b不在dict中,但是我们发现b可以和a结合,形成ab,而ab在dict中,所以这里的每个子串就可以有三种选择,要么自己单独作为个体到dict中找,要么就跟前面的结合起来进行找。要么就是等,等后面的新的字符,构成更长的子串。

但是还有问题,上面我们说的是跟前面的结合起来找,那么这个前面是个什么定义?开头?开头后的第一个? 第二个?所以我们要记录一些信息,来表示前面的子串,是从哪里断开,从而满足条件的,那么我们就可以依次与离当前子串近的部分进行结合。比如:word = ’aab‘, dict = { a, aab },处理a时,是满足的,下一个a,也是满足的,处理 b 时,b不在dict中,那么就与前面的a结合, 形成 ab,发现不在dict 中,那么继续与前面的结合,形成 aab,发现在dict 中,那么 word 整体就满足条件。

class Solution:    # @param s, a string    # @param dict, a set of string    # @return a boolean    def wordBreak(self, s, dict):        if len( s ) == 0 or len(dict) == 0:            return False        #初始长度为0,表示的是之前的元素已经搞定,可以从0开始继续向后        dp = [ 0 ]        # s串的长度,[1, len ( s )],我们挨个去搞定后续的断句        for i in range(1, len( s ) + 1):            #前面所有的合法的断句处,也就是所有的合法的起始点,因为若前面的都没搞定,不可以继续后面的            for j in xrange( len( dp ) - 1, -1, -1):                substr = s[dp[j] : i]                if substr in dict:                    dp.append(i)                    break        return dp[-1] == len( s )

你可能感兴趣的文章
OS + Unix Aix telnet
查看>>
IBM Lotus
查看>>
Linux +Win LAMPP Tools XAMPP 1.7.3 / 5.6.3
查看>>
my read_university
查看>>
network manager
查看>>
searchServer IBM OminiFind / WebSphere Commerce SOLR
查看>>
OS + Linux Disk disk lvm / disk partition / disk mount / disk io
查看>>
my read_Country
查看>>
RedHat + OS CPU、MEM、DISK
查看>>
project bbs_discuz
查看>>
net TCP/IP / TIME_WAIT / tcpip / iperf / cain
查看>>
Unix + OS books
查看>>
script webshell jspWebShell / pythonWebShell / phpWebShell
查看>>
project site_dns
查看>>
webServer kzserver/1.0.0
查看>>
hd printer lexmark / dazifuyin / dayin / fuyin
查看>>
OS + Unix IBM Aix basic / topas / nmon / filemon / vmstat / iostat / sysstat/sar
查看>>
monitorServer nagios / cacti / tivoli / zabbix / SaltStack
查看>>
my ReadMap subway / metro / map / ditie / gaotie / traffic / jiaotong
查看>>
OS + Linux DNS Server Bind
查看>>