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

如何将网站生成二维码建站公司还有前途吗

如何将网站生成二维码,建站公司还有前途吗,php网站建设方案,头条小程序算法-动态规划/trie树-单词拆分 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/word-break/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 动态规划 2.1 解题思路 dp[i]表示[0, i)字符串可否构建那么dp[i]可构建的条件是&…

算法-动态规划/trie树-单词拆分

1 题目概述

1.1 题目出处

https://leetcode.cn/problems/word-break/description/?envType=study-plan-v2&envId=top-interview-150

1.2 题目描述

在这里插入图片描述

2 动态规划

2.1 解题思路

  1. dp[i]表示[0, i)字符串可否构建
  2. 那么dp[i]可构建的条件是,[0,j)可构建且[j,i)包含在wordDict中
  3. 这里你可能会问,那如果是[j,i)不能直接构建,而是有wordDict种的两个单词构建怎么办?其实,因为我们是从低到高构建的动态规划,所以设k > j 且 k <i,那么dp[k] = true,因为dp[j]=true且 [j,k)在wordDict中。那么 [k, i)就是剩下的那个单词了,所以 [j,i)也可以被构建。

2.2 代码

class Solution {public boolean wordBreak(String s, List<String> wordDict) {// dp[i]表示[0, i)字符串可否构建// 那么dp[i]可构建的条件是,[0,j)可构建且[j,i)包含在wordDict中boolean[] dp = new boolean[s.length() + 1];dp[0] = true;Set<String> set = new HashSet<>(wordDict);for (int i = 1; i <= s.length(); i++) {for (int j = 0; j < i; j++) {if (dp[j] == true && set.contains(s.substring(j, i))) {dp[i] = true;break;}}}return dp[s.length()];}
}

2.3 时间复杂度

O(c*s.length)
在这里插入图片描述

2.4 空间复杂度

O( s.length)

3 trie树

3.1 解题思路

  1. 将wordDict构建trie树
  2. 将s从位置0开始往后匹配查找
  3. 如果当前位置能匹配上,继续判断是否是单词结尾,如果是且下一个单词开始的匹配也能成功,就说明能构建,返回true
  4. 其他情况继续往后匹配

3.2 代码

class Solution {Trie root = new Trie();// 记忆数组,用来快速判定该位置是否可以作为单词结尾进行拆分构建boolean[] no = new boolean[300];public boolean wordBreak(String s, List<String> wordDict) {// 将所有word插入字典树for (String word : wordDict)root.insert(word);// 从0个字符开始往后查找,只要匹配成功说明可以构建目标字符串if (root.find(s, 0)) {return true;}return false;}class Trie{public Trie[] children = new Trie[26];// 当前child代表的字符是否是单词结尾boolean isEnd = false;public void insert(String word) {if (null == word || word.length() == 0) {isEnd = true;return;}int index = word.charAt(0) - 'a';Trie child = children[index];if (null == child) {child = new Trie();children[index] = child;}child.insert(word.substring(1));}public boolean find(String s, int i) {// 快速判定当前字符位置是否可以拆分构建// 注意这里必须判定当前节点是否是root,因为我们缓存是从根节点开始的// 否则会对其他child的正常判断过程造成误判if (this == root && no[i]) {return false;}char firstC = s.charAt(i);Trie child = children[firstC - 'a'];if (null == child) {// 如果不能匹配指定位置字符,肯定不可构建if (this == root) {no[i] = true;}return false;}if (child.isEnd) {// 如果能找到目标字符,且字符是单词结尾if (i + 1 == s.length()) {// 如果// 1.已经扫描到字符串最后的字符// 就说明当前位置可以用来拆分构建目标字符串return true;} else {if (root.find(s, i+1)) {// 如果下一个字符往后的字符串能构建// 就说明当前位置可以用来拆分构建目标字符串return true;} else {// 否则说明i+1字符虽是单词结尾,但无法直接拆分构建,记录下来no[i+1] = true;}}}if (i + 1 < s.length()) {// 还未到结尾,可以继续往后查找return child.find(s, i+1);} else {// 已到单词结尾,构建失败return false;}}}
}

3.3 时间复杂度

在这里插入图片描述

3.4 空间复杂度

O(s.length)

参考

  • 循序渐进5种解法,从字典树trie回溯延伸到动态规划
http://www.yayakq.cn/news/482321/

相关文章:

  • 成都品牌建设网站公司微信公众平台开发模式
  • 男朋友抱着我在教室做网站北京江苏省住房和城乡建设厅网站
  • 济南专门做公司网站的公司网站建设推广公司价格
  • 百度seo公司整站优化软件为什么做网站都用php
  • 沈阳公司建设网站网站数据每隔几秒切换怎么做的
  • 网站制作 语言选择怎么做wordpress获取文章中的图片不显示
  • 网站建设需要版块免费网站建设推荐
  • 阜宁有做网站的吗app的开发工具有哪些
  • 网站建设案例图片热搜榜上能否吃自热火锅
  • 公司做网站费用计什么科目台州城乡建设规划网站
  • 制作简单的个人网站北京感染峰值已过
  • 网站排名优化工薪待遇外贸网站做排名
  • 网站开发前端规范网站搜索框用ps怎么做
  • 如何查看网站备案信息...东莞网站公司
  • 南昌市建设局网站外国网站dns
  • 软文网站有哪些百度上做网站模板
  • 广西金利建设有限公司网站西安网络科技公司有哪些
  • 网站建设常用工具网站的建设分析
  • 政务服务网站建设运行情况关键词优化推广排名多少钱
  • 百度提交网站入口网站网盘网站开发
  • 哪个网站做欧洲旅游攻略好做机械出口用哪个网站好
  • 韶关网站建设的公司网站建设数据库软件
  • 网站建设设计图软件律师网站建设建议
  • 温州网站建设icp备做调查问卷权威网站
  • seo网站排名优化工具商城集团
  • 17做网店这个网站做起多少钱wordpress fastcgi
  • 石家庄电子商务网站建设西安企业门户网站建设
  • 建设银行网站怎么登录制作网站要找什么公司
  • 做flash网站的软件wordpress本地数据库密码
  • 机票网站建设大型网站多少钱