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

输变电壹级电力建设公司网站wordpress新增页面

输变电壹级电力建设公司网站,wordpress新增页面,建设电商网站的总结报告,网站风格分类有哪些问题背景 给你一个字符串数组 w o r d s words words 和一个字符串 t a r g e t target target。 如果字符串 x x x 是 w o r d s words words 中 任意 字符串的 前缀(字符串的前缀是从字符串的开头开始并延伸到其中任意点的子串),则认为…

问题背景

给你一个字符串数组 w o r d s words words 和一个字符串 t a r g e t target target
如果字符串 x x x w o r d s words words任意 字符串的 前缀(字符串的前缀是从字符串的开头开始并延伸到其中任意点的子串),则认为 x x x 是一个 有效 字符串。
现计划通过 连接 有效字符串形成 t a r g e t target target,请你计算并返回需要连接的 最少 字符串数量。如果无法通过这种方式形成 t a r g e t target target,则返回 − 1 -1 1

数据约束

  • 1 ≤ w o r d s . l e n g t h ≤ 100 1 \le words.length \le 100 1words.length100
  • 1 ≤ w o r d s [ i ] . l e n g t h ≤ 5 × 1 0 3 1 \le words[i].length \le 5 \times 10 ^ 3 1words[i].length5×103
  • s u m ( w o r d s [ i ] . l e n g t h ) ≤ 1 0 5 sum(words[i].length) \le 10 ^ 5 sum(words[i].length)105
  • w o r d s [ i ] words[i] words[i] 只包含小写英文字母
  • 1 ≤ t a r g e t . l e n g t h ≤ 5 × 1 0 3 1 \le target.length \le 5 \times 10 ^ 3 1target.length5×103
  • t a r g e t target target 只包含小写英文字母

解题过程

周赛第三题的水准,数据范围允许暴力解,似乎可以用前缀树搭配嵌套循环解决。遗憾的是我目前只会写前缀树,还不会用前缀树来解决问题。
既然要学,那就学习一下一般情形化的做法。这题可以看作将目标分割成几个部分,每个部分都是给定的数组中字符串的前缀。
要求选用的字符串尽可能少,就要每次覆盖的范围尽可能大,这就可以参考 跳跃游戏 II 和 灌溉花园的最少水龙头数目。没有保证一定能实现目标,要单独处理。

分割的部分,需要用到 扩展 KMP 算法,也叫字符串的 Z 函数,它的作用是求出一个字符串中各个后缀与它本身的最长公共前缀的长度。这个东西今天是第一次见,不要求马上能学会,先见识一下。
还有使用字符串哈希和 AC 自动机的做法,因为相应的算法还没有掌握,先不作要求,可以暂时把重点放在吃透造桥问题的贪心做法上。

具体实现

class Solution {public int minValidStrings(String[] words, String target) {int n = target.length();int[] maxJumps = new int[n];for(String word : words) {// 把目标拼到这个单词的后面,就可以求出 Z 函数来辅助计算每个字符串可取的最大前缀了// 加一个特殊字符,防止下标越界int[] z = calcZ(word + "#" + target);int m = word.length() + 1; // 这里额外加的长度,是用来修正特殊字符的// 求出目标每个位置上能够匹配到的最大前缀长度for(int i = 0; i < n; i ++) {maxJumps[i] = Math.max(maxJumps[i], z[m + i]);}}return jump(maxJumps);}// Z 函数private int[] calcZ(String s) {char[] chS = s.toCharArray();int n = chS.length;int[] z = new int[n];int left = 0, right = 0;for(int i = 1; i < n; i++) {if(i <= right) {z[i] = Math.min(z[i - left], right - i + 1);}while(i + z[i] < n && chS[z[i]] == chS[i + z[i]]) {left = i;right = i + z[i];z[i]++;}}return z;}// 造桥问题的解,参见 Leetcode 45.跳跃游戏 II 和 Leetcode 1326.灌溉花园的最少水龙头数目private int jump(int[] maxJumps) {int res = 0;int curEnd = 0;int nextEnd = 0;for(int i = 0; i < maxJumps.length; i++) {nextEnd = Math.max(nextEnd, i + maxJumps[i]);if(i == curEnd) {if(i == nextEnd) {return -1;}curEnd = nextEnd;res++;}}return res;}
}
http://www.bjxfkj.com.cn/article/110571.html

相关文章:

  • 网站建设公司导航wordpress影视网站
  • 个人网页设计图片素材网新网站前期seo怎么做
  • 如何在网站添加代码4399网页游戏大全电脑版在线玩
  • 我是做网站怎么赚钱2013网站设计
  • 深圳有没有可以做家教的网站最新远程网站建设服务器
  • 全国网站设计排名织梦模板怎么修改主页
  • 温州网站建设公司哪个好手机做网站的
  • 旅游网站建设服务对象wordpress英文改为中文
  • 怎么做网站销售什么是网络营销信息
  • 网站开发硬件环境怎么在网上做网络营销
  • 网站乱码淮北市相山区建设局网站
  • 宝宝投票网站怎么做的新余市建设局网站
  • 游戏网站logo制作十堰网络推广培训
  • 网站内部优化wordpress禁用php报错
  • 哈尔滨建立网站公司河南省城乡与住房建设厅网站首页
  • 申请一个域名可以建设一个网站吗温州专业建站
  • 自学设计软件的免费网站虚拟主机管理
  • 网站建设与维护视频教程在中国如何申请域名
  • 网站策划书的要点青岛网站建设seo优化
  • 北京建站模板展示平躺设计家官网
  • 电子商务网站建设应该侧重哪方面soho设计网站
  • 温州苍南网站建设品牌网站如何做
  • 网站切片 做程序html5网页制作源码大全
  • 如何让百度收录网站濮阳全员核酸检测
  • wordpress给会员发信seo推广培训中心
  • 佛山制作手机网站网站制作中需要注意的地方
  • 建个微商城网站电商小程序开发方案
  • 做公司网站需要什么程序html设计网站
  • 怎么查网站是哪家制作公司做的龙岩公司注册流程
  • 企业网站托管后果湖北城市建设职业技术学院网站