zoukankan      html  css  js  c++  java
  • 单词拆分

    题目链接:https://leetcode-cn.com/problems/word-break
    题目描述:
    给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。

    说明:
    拆分时可以重复使用字典中的单词。
    你可以假设字典中没有重复的单词。

    示例 1:
    输入: s = "leetcode", wordDict = ["leet", "code"]
    输出: true
    解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。

    示例 2:
    输入: s = "applepenapple", wordDict = ["apple", "pen"]
    输出: true
    解释: 返回 true 因为 "applepenapple" 可以被拆分成 "apple pen apple"。
      注意你可以重复使用字典中的单词。

    示例 3:
    输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
    输出: false

    题解:

    
    class Solution {
    public:
        bool wordBreak(string s, vector<string>& wordDict) {
            unordered_set wordSet(wordDict.begin(), wordDict.end());
            //dp[i]: 字符串长度为i时,是否可以被拆分为单词
            vector<bool> dp(s.size() + 1, false);
            dp[0] = true;
            for(int i = 1; i <= s.size(); i++)
            {
                for(int j = 0; j < i; j++)
                {
                    string word = s.substr(j, i - j);     //从j下标开始截取长度i-j的字符串
                    if(wordSet.find(word) != wordSet.end() && dp[j] == true)
                        dp[i] = true;
                }
            }
            return dp[s.size()];
    
        }
    };
    
    
  • 相关阅读:
    聊聊click延迟和点击穿透
    setAttribute的浏览器兼容性(转)
    浅谈JS中的高级函数
    跨域总结
    本地存储小结
    ubuntu下pip的安装和使用
    并发编程艺术-锁类型以及底层原理
    HTTP协议以及HTTP2.0/1.1/1.0区别
    Paxos
    jvm垃圾收集器总结jdk1.7
  • 原文地址:https://www.cnblogs.com/ZigHello/p/15172226.html
Copyright © 2011-2022 走看看