LintCode 单词切分

给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。

给出

s = “lintcode”

dict = [“lint”,”code”]

返回 true 因为”lintcode”可以被空格切分成”lint code”

动态规划。

第一种:
dp[i]表示前i个字符能否被切分。前i个字符能否被切分依赖于下面所述:
如果前i-1个字符能被切分,而且第i个字符在dict中,则dp[i]=1.
如果前i-2个字符能被切分,而且第i-1到第i个在dict中,则dp[i]=1
如果前i-3个字符能被切分,而且第i-2到第i个在dict中,则dp[i]=1
……
如果前0个字符能被切分,而且第1到第i个在dict中,则dp[i]=1
代码如下:

class Solution:
    # @param s: A string s
    # @param dict: A dictionary of words dict
    def wordBreak(self, s, dict):
        # write your code here
        n=len(s)
        if len(dict)==0 and len(s)!=0:
            return False
        dp=[0 for x in range(n+1)]
        dp[0]=1
        for i in range(1,n+1):
            for j in  range(1,i+1):
                if dp[i-j]==1 and s[i-j:i] in dict:
                        dp[i]=1
                        break
        if dp[n]==1:
            return True
        else:
            return False

这样会超时。。。

第二种:

来看代码

class Solution:
    # @param s: A string s
    # @param dict: A dictionary of words dict
    def wordBreak(self, s, dict):
        # write your code here
        n=len(s)
        if len(dict)==0 and len(s)!=0:
            return False
        dp=[0]*(n+1)
        dp[0]=1
        for i in range(0,n+1):
            if (not dp[i]): #如果dp[i]=0,则继续找到dp[i]=1的位置
                continue
            for word in dict:   #依次判断字典中的每个单词
                length=len(word) 
                end=i+length
                if end>n:     #如果第i位置加上字典中该词的长度超过了整个字符串s的长度,肯定不能以该单词来切分
                    continue
                if s[i:end]==word:#没超过长度的话,判断i位置向后长度为length的片段和该单词是否匹配
                    dp[end]=1
                    #注意此处不能加break,要判断每个单词,这样才可以更新所有可以切分的位置
        if dp[n]==1:
            return True
        else:
            return False

第二种方法学习于下面
你看看别人家的孩子%>_<%

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 中的 split() 函数将字符串切分单词,再使用 sorted() 函数对单词进行排序。 例如,假设我们有一个字符串: ``` text = "This is a sample text, just for demonstration." ``` 我们可以使用 split() 函数将其切分单词: ``` words = text.split() ``` 这将返回一个包含所有单词的列表: ``` ['This', 'is', 'a', 'sample', 'text,', 'just', 'for', 'demonstration.'] ``` 然后,我们可以使用 sorted() 函数对这些单词进行排序: ``` sorted_words = sorted(words) ``` 这将返回一个按字母顺序排序的单词列表: ``` ['This', 'a', 'demonstration.', 'for', 'is', 'just', 'sample', 'text,'] ``` 完整的代码如下: ``` text = "This is a sample text, just for demonstration." words = text.split() sorted_words = sorted(words) print(sorted_words) ``` ### 回答2: 在Python中,我们可以使用split()方法来切分字符串成单词,并使用sorted()函数对切分后的单词进行排序。 首先,假设我们有一个字符串的变量名为sentence,其中包含了一句话。我们可以使用split()方法将这句话切分单词。例如: sentence = "我爱学习编程" words = sentence.split() 接下来,我们可以使用sorted()函数对切分后的单词进行排序。sorted()函数可以接收一个可迭代对象作为参数,并返回一个排序后的新列表。在排序字符串时,默认是按照字母顺序进行排序。例如: sorted_words = sorted(words) 最后,我们可以打印出排序后的单词列表。例如: for word in sorted_words: print(word) 上述代码将会按照字母顺序打印出切分并排序后的单词。 总结起来,我们可以使用split()方法切分字符串成单词,并使用sorted()函数对单词进行排序。希望这个简短的回答对您有帮助! ### 回答3: 在Python中,可以通过split()函数将字符串切分单词,并利用排序函数对单词进行排序。 首先,使用input()函数让用户输入一个句子或一段文字。例如: text = input("请输入一个句子或一段文字:") 然后,使用split()函数将文字切分单词。split()函数会默认使用空格作为分隔符,将句子切分单词列表。例如: words = text.split() 接下来,使用sorted()函数对单词列表进行排序。sorted()函数会按照字母顺序对单词进行排序,默认是升序。例如: sorted_words = sorted(words) 最后,可以通过打印sorted_words输出排序后的单词列表。例如: print(sorted_words) 完整代码如下: ```python text = input("请输入一个句子或一段文字:") words = text.split() sorted_words = sorted(words) print(sorted_words) ``` 这样,就可以实现切分单词并排序的功能了。注意,以上代码只能对英文单词进行排序,对于中文或其他语言的单词排序可能需要使用其他方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值