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

title 芜湖网站制作百度app安装下载

title 芜湖网站制作,百度app安装下载,医院做网站的好处,网站 手机案例题目 对于一个连续正整数组成的序列,可以将其拼接成一个字符串,再将字符串里的部分字符打乱顺序。如序列8 9 10 11 12,拼接成的字符串为89101112,打乱一部分字符后得到90811211,原来的正整数10就被拆成了0和1。 现给定一个按如上规则得到的打乱字符的字…

题目

对于一个连续正整数组成的序列,可以将其拼接成一个字符串,再将字符串里的部分字符打乱顺序。如序列8 9 10 11 12,拼接成的字符串为89101112,打乱一部分字符后得到90811211,原来的正整数10就被拆成了0和1。

现给定一个按如上规则得到的打乱字符的字符串,请将其还原成连续正整数序列,并输出序列中最小的数字。

输入描述

输入一行,为打乱字符的字符串和正整数序列的长度,两者间用空格分隔,字符串长度不超过200,正整数不超过1000,保证输入可以还原成唯一序列。

输出描述

输出一个数字,为序列中最小的数字。

用例

输入输出
19801211 58

思考

给出了有序序列的长度,因此可从整数 1 开始选取连续的给定长度的数字序列和打乱序列进行匹配,如果是组成成分完全相同的序列就终止选取序列循环,返回枚举序列的起点数字,即序列中最小数字。这个在循环中枚举起点选取固定长度序列操作就是滑动窗口思想的应用,窗口的大小就是给定的序列长度。问题是怎么比较选取有序序列和打乱的目标序列?我开始想到的做法竟然是把序列拆分成单个数字字符数组再转成单个数字组成的数组从小到大排序后再连接成字符串和同样这样处理的目标字符串进行比较,完全相同就找到目标序列。如[9, 10, 11]->[9,1,0,1,1]->[0,1,1,1,9]->"01119"。这样反复拆分字符串又排序,做法肯定不好。实际上比较两个字符串的成分是否相同应该统计组成它们的0-9数字频率是否相同,如果相同则它们的有序序列一定相同。定义一个数组,索引 0~9 对应的值为索引表示的数字出现的频率,预先计算目标字符串的频率数组 matchFreqs,每次移动窗口左边界时开始更新选取的数字序列频率数组 freqs,并比较 matchFreqs 和 freqs 频率是否完全匹配,匹配则找到结果,然后返回窗口左边界值。

算法过程

  1. 统计目标字符串数字频率:用长度为 10 的数组记录 0-9 各数字出现次数。
  2. 确定起始数字范围:最大起始值设为1000-n(受题目条件限制)。
  3. 遍历检查可能起始值:对每个起始数i,生成i到i+n-1的数字串,统计频率并与目标对比。
  4. 输出匹配结果:找到频率完全一致的起始值i,输出即为最小数字。

时间复杂度:O (m + k×n),m 为字符串长度,k 为遍历次数(最多 1000)。

参考代码

function solution() {const arr = readline().split(' ');const n = parseInt(arr[1]);const matchStr = arr[0];const matchFreqs = Array(10).fill(0);for (let num of matchStr) {matchFreqs[Number(num)]++;}const check = function(i, j) {let s = '';for (let k = i; k < j; k++) {s += k;}s = s.toString();const freqs = Array(10).fill(0);for (let c of s) {freqs[Number(c)]++;}for (let i = 0; i <= 9; i++) {if (freqs[i] !== matchFreqs[i]) {return false;}}return true;};for (let i = 1; i <= 1000-n; i++) {let j = i + n;if (check(i, j)) {console.log(i);return;}}}const cases = [`19801211 5`,
];let caseIndex = 0;
let lineIndex = 0;const readline = (function () {let lines = [];return function () {if (lineIndex === 0) {lines = cases[caseIndex].trim().split("\n").map((line) => line.trim());}return lines[lineIndex++];};
})();cases.forEach((_, i) => {caseIndex = i;lineIndex = 0;solution();
});

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

相关文章:

  • 源码可以做网站吗怎么推广自己的网站
  • 平谷做网站西安百度竞价开户
  • 成都网站建设市场分析百度广告收费表
  • 网站建设 上海网足球直播在线直播观看免费cctv5
  • 网站右侧返回顶部营销技巧和营销方法视频
  • 网站制作公司转型数据杭州优化公司多少钱
  • 深圳网站建设公司电话网页优化公司
  • 江苏付费网络推广培训沈阳seo网站关键词优化
  • 用时时彩做网赚的网站是真的吗seo 推广
  • 菏泽网站建设电话百度推广多少钱一天
  • 网站排名数据湖南疫情最新消息今天
  • 母了猜猜看游戏做网站电商培训
  • 怎么做淘宝客优惠券网站网络营销推广网站
  • 高端奶茶加盟网站建设seo营销推广
  • 单页网站怎么做排名百度seo优化排名客服电话
  • 动漫设计专业好就业吗seo网站优化方
  • 洮南做网站网络营销方式有哪些
  • 网站搜索量查询和生活app下载安装最新版
  • 网站建设和销售有关吗湖南靠谱seo优化报价
  • 网站受到攻击会怎么样地推拉新app推广接单平台免费
  • 网站百度推广怎么做的网站seo课设
  • 城乡建设杂志官方网站苏州seo门户网
  • 购买模板做网站南宁网站推广哪家好
  • 主营网站建设品牌网络零售的优势有哪些
  • 什么网站类型全球十大网站排名
  • 建c2c网站今日新闻最新10条
  • 互联网行业网站建设网络营销有哪些推广方式
  • 哪里找网站建设靠谱 知乎软文代写公司
  • 兰州网站seo费用千锋教育可靠吗
  • 网页网站开发手机游戏百度电脑版网页版入口