当前位置: 首页 > wzjs >正文

迁西网站开发汕头网站建设方案外包

迁西网站开发,汕头网站建设方案外包,威海建设局网站楼盘信息公布,广州省建设监理协会网站140. 单词拆分 II 给定一个字符串 s 和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。 注意:词典中的同一个单词可能在分段中被重复使用多次。 示例…

140. 单词拆分 II

  • 给定一个字符串 s 和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。

  • 注意:词典中的同一个单词可能在分段中被重复使用多次。

  • 示例 1:

    • 输入:s = “catsanddog”, wordDict = [“cat”,“cats”,“and”,“sand”,“dog”]

    • 输出:[“cats and dog”,“cat sand dog”]

  • 示例 2:

    • 输入:s = “pineapplepenapple”, wordDict = [“apple”,“pen”,“applepen”,“pine”,“pineapple”]

    • 输出:[“pine apple pen apple”,“pineapple pen apple”,“pine applepen apple”]

    • 解释: 注意你可以重复使用字典中的单词。

  • 示例 3:

    • 输入:s = “catsandog”, wordDict = [“cats”,“dog”,“sand”,“and”,“cat”]

    • 输出:[]

  • 思路:

    • 递归函数设计:

      1. 定义一个递归函数 backtrack(s, path, result),其中 s 是当前待处理的字符串,path是当前已经分割好的单词列表,result是最终的结果列表

      2. 如果 s 为空,说明我们已经成功分割了整个字符串,将path中的单词用空格连接起来,加入result中

      3. 否则,遍历 s 的所有可能的前缀,如果某个前缀在wordDict中,就递归处理剩下的字符串,并将当前前缀加入path中

    • 优化:

      为了避免重复计算,可以使用记忆化技术(Memoization)来存储已经处理过的子串的结果

class Solution(object):def wordBreak(self, s, wordDict):""":type s: str:type wordDict: List[str]:rtype: List[str]"""wordDict = set(wordDict)  # 转换为集合,方便快速查找memo = {}  # 用于记忆化def backtrack(s):if s in memo:return memo[s]if not s:return [""]  # 返回一个包含空字符串的列表,表示成功分割result = []for i in range(1, len(s) + 1):word = s[:i]if word in wordDict:for sentence in backtrack(s[i:]):if sentence:result.append(word + " " + sentence)else:result.append(word)memo[s] = resultreturn resultreturn backtrack(s)
  • 执行流程示例
开始: "catsanddog"
|
├── 分割 "cat" -> 剩下 "sanddog"
|   |
|   └── 分割 "sand" -> 剩下 "dog"
|       |
|       └── 分割 "dog" -> 剩下 ""
|           |
|           └── 成功分割: "cat sand dog"
|
└── 分割 "cats" -> 剩下 "anddog"|└── 分割 "and" -> 剩下 "dog"|└── 分割 "dog" -> 剩下 ""|└── 成功分割: "cats and dog"
  • 时间复杂度:最坏情况下,每个子串都需要被处理一次,时间复杂度为 O(2^n),但由于使用了记忆化,实际复杂度会降低

  • 空间复杂度:主要是递归栈和记忆化存储的空间,最坏情况下为 O(n^2)

http://www.dtcms.com/wzjs/178914.html

相关文章:

  • 宁国网站建设做搜索引擎推广多少钱
  • 海南城乡建设庁网站深圳整合营销
  • 河北省城乡规划建设局官方网站站外seo推广
  • 马云1688网站在濮阳如何做广告营销平台
  • 网站建设先做前台还是后台域名注册需要多久
  • 自适应网站建设服务哪家好链接平台
  • 给 小企业 建设网站新手怎么开始做电商
  • 做钢材生意选什么网站爱营销电信版下载app最新版
  • 安阳县职业中等专业学校济南seo网站优化公司
  • 为什么IIS发布不了网站口碑营销有哪些
  • 网站后台数字排版该怎么做seo查询是什么意思
  • 建筑工程承包网址大全长沙seo袁飞
  • 延安网站建设电话咨询百度网盘客户端
  • 网站建设西安快速排名精灵
  • 做网站费用滁州运城seo
  • 怎么样建设自己的网站页面优化
  • jeecms可以做网站卖吗独立站平台选哪个好
  • 宿迁哪家做网站好活动推广方案怎么写
  • 网站建设案例策划厨师培训机构
  • 东营网站建设入门企业网址怎么申请
  • 北京网站制作报价网站备案查询工信部官网
  • 旅游开发公司网站建设方案书必应搜索引擎入口
  • 广元做网站网站一级域名和二级域名
  • 做网站开发要学多久北京seo优化外包
  • 用asp做的网站运行完之后怎么生成一个可以打开的网站图标网站开发报价方案
  • 嘉兴 网站 制作简述网络营销的含义
  • .net网站开发是什么对象开发小广告清理
  • 买CAD设计图做的网站申请一个网站
  • 怎么通过数据库做网站的登录网络销售推广平台
  • 网站做以后怎么修改网站内容石家庄疫情最新情况