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

网站定制开发加公众号网页设计资料下载网站

网站定制开发加公众号,网页设计资料下载网站,福田欧曼配件大全,织梦网站更换域名Problem: 936. 戳印序列 文章目录 思路解题方法复杂度Code 思路 这道题目要求我们通过使用印章来印刷目标字符串,使得目标字符串最终变成全为’?‘的字符串。我们可以使用贪心的思想来解决这个问题。 首先,我们需要找到所有可以匹配印章的位置&#xff…

Problem: 936. 戳印序列

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

这道题目要求我们通过使用印章来印刷目标字符串,使得目标字符串最终变成全为’?‘的字符串。我们可以使用贪心的思想来解决这个问题。
首先,我们需要找到所有可以匹配印章的位置,即目标字符串中与印章的第一个字符相同的位置。然后,我们可以尝试在这些位置上使用印章进行印刷,如果印章的字符与目标字符串的对应位置字符相同,我们可以将该位置的字符替换为’?‘,表示已经印刷过。然后,我们继续寻找下一个可以匹配印章的位置,重复上述步骤,直到无法找到可以匹配印章的位置为止。
最后,我们需要检查目标字符串是否已经全部变为’?',如果是,则返回印刷的顺序,否则返回空数组。

解题方法

将印章和目标字符串转换为字符数组,方便操作。
初始化一个数组indegree,用于记录每个可以匹配印章的位置的入度,初始值为印章的长度。
建立一个图,用于记录每个位置与其他可以匹配印章的位置的关系。图的每个节点表示目标字符串的位置,节点之间的边表示可以匹配印章的关系。
初始化一个队列queue,用于存储可以匹配印章的位置。
遍历目标字符串,找到所有可以匹配印章的位置,并更新indegree和queue。
初始化一个布尔数组visited,用于记录每个位置是否已经访问过。
初始化一个数组path,用于存储印刷的顺序。
使用广度优先搜索(BFS)遍历图,将印刷的顺序存储在path中。
检查path的长度是否等于目标字符串长度减去印章长度加一,如果是,则将path逆序调整,并返回path,否则返回空数组。

复杂度

时间复杂度:

时间复杂度: O ( n 2 ) O(n^2) O(n2),其中n为目标字符串的长度。建立图的时间复杂度为 O ( n 2 ) O(n^2) O(n2),BFS的时间复杂度为 O ( n 2 ) O(n^2) O(n2)

空间复杂度:

空间复杂度: O ( n ) O(n) O(n),其中n为目标字符串的长度。需要使用额外的空间存储图、队列、布尔数组和印刷顺序数组。

Code

class Solution {public int[] movesToStamp(String stamp, String target) {char[] s = stamp.toCharArray();char[] t = target.toCharArray();int m = s.length;int n = t.length; int[] indegree = new int[n - m + 1];Arrays.fill(indegree, m);// 建图List<List<Integer>> graph = new ArrayList<>();for(int i = 0; i < n; i++) {graph.add(new ArrayList<>());}int[] queue = new int[n - m + 1];int l = 0, r = 0;for(int i = 0; i < n - m + 1; i++) {for(int j = 0; j < m; j++) {if(t[i + j] == s[j]) {if(--indegree[i] == 0) {queue[r++] = i;}} else {graph.get(i + j).add(i);}}}// 同一个位置看上的错误 不要重复统计boolean[] visited = new boolean[n];int[] path = new int[n - m + 1];int size = 0;while(l < r) {int cur = queue[l++];path[size++] = cur;for(int i = 0; i < m; i++) {if(!visited[cur + i]) {visited[cur + i] = true;for(int next : graph.get(cur + i)) {if(--indegree[next] == 0) {queue[r++] = next;}}}}}if (size != n - m + 1) {return new int[0];}// path逆序调整for (int i = 0, j = size - 1; i < j; i++, j--) {int tmp = path[i];path[i] = path[j];path[j] = tmp;}return path;}
}
http://www.yayakq.cn/news/38474/

相关文章:

  • 首次做淘宝客网站要安装程序吗远程wordpress数据库
  • 温州网站设计公司网推拉新平台
  • 销售型网站营销目标网站 网页数量
  • 怎么自己做画册网站微官网和手机网站区别
  • 平台型网站建设公司台州建设局网站企业黑名单
  • 怎么做网站文章伪原创jiasale wordpress 插件
  • 宜兴建设局的网站移动端网站建设公司
  • 做服装团购有哪些网站网站策划知识
  • 百度站长反馈中心wordpress固定链接500
  • 设计之家网站怎么样江苏省建设招标网站首页
  • 关于网站建设的基础知识厦门35网站建设公司
  • 上海网站开发方案郑州网站推广哪家专业
  • 天水市网站建设网站如何开通支付功能
  • 网站开发需要大学吗沪深300指数基金排名
  • 电子商务网站建设的心得体会黑白高端大气网站设计工作室织梦dedecms模板
  • 网站的栏目和版块设计的原则吕梁seo排名
  • 工业做网站甜橙直播
  • 哪个网站做欧洲旅行比较好淘宝客网站怎么做优化
  • 大气手机网站用什么软件做网站前端
  • 西宁网站设计公司js做示爱网站例子
  • 莱芜网站建设自助建站优化微信公众号网页怎么制作
  • 沈阳科技网站建设wordpress搜索不了中文linux
  • 建设一个能看视频的网站手机网站需要备案吗
  • 清理wordpress烟台优化网站排名
  • 知名企业门户网站建设联系电话湖州长兴做网站
  • 档案网站建设思考php wordpress 漏洞
  • 新乡网站建设设计做一个配送网站
  • 怎么做网站关键词库排名千万别在百度上搜别人的名字
  • 网站开发用wordpress英文源码
  • 网站建设公司源码 asp新手如何做网站