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

轻松网站建设优化营商环境的意义

轻松网站建设,优化营商环境的意义,法拍重庆网站,东莞房价2022最新房价给出原文字符串 str,通过对字符串的每个字母进行改变来实现加密,加密方式是在每一个字母str[i] 偏移特定数组元素 a[i] 的量。 数组 a 的前三位已经赋值:a[0]1,a[1]2,a[2]4,当 i>3 时,数组元…

给出原文字符串 str,通过对字符串的每个字母进行改变来实现加密,加密方式是在每一个字母str[i] 偏移特定数组元素 a[i] 的量。
数组 a 的前三位已经赋值:a[0]=1,a[1]=2,a[2]=4,当 i>=3 时,数组元素 a[i]=a[i-1]+a[i-2]+a[i-3]。
例如:原文abcde加密后bdgkr,其中偏移量分别是1,2,4,7,13。

输入描述
输入描述:第一行是整数n,表示n组测试数据。 每组数据包含一行,原文str(只含有小写字母,长度大于 0 小于 50)。
输出描述:每组测试数据输出一行,表示密文。

用例

输入输出

1

xy

ya

2

xy

abcde

ya

bdgkr

思考

题目给出了偏移数组的计算方式,这个就是动态规划数组的状态转移方程。只要根据这个方程计算字符串中的每个字符的偏移量,然后用字符对应的 ASCII 码或者字符在字母表中的索引计算新的字符。无论选择哪种计算方式都会遇到索引超出26个字母的索引范围,因此需要判断索引超出范围要进行取模使其正确在字母表中循环。这里用字符的ASCII 码计算索引,通过 aCode +(code  - zCode -1) % 26 获得字符在 26 个小写字母中的索引。 aCode = 'a'.charAtCode(0) = 97,zCode = 'z'.charCodeAt(0) = 122。当 code = 125 时, (code  - zCode -1 ) % 26 = (125 - 122 - 1) % 26 = 2; 实际是偏移了 3 个位置,减 1 是因为从初始位置 a = 97 开始偏移,故 97 + 2 = 99,结果是 c。

算法过程

  1. 输入读取:读取测试用例数量n,依次处理每组测试用例的输入字符串。

  2. 生成偏移量:对每个输入字符串,生成对应的偏移量数组。偏移量生成规则为:

    • 初始值:a[0]=1, a[1]=2, a[2]=4

    • 递推公式:a[i] = a[i-1] + a[i-2] + a[i-3](当i≥3时)。

  3. 字符加密:对字符串中每个字符s[i],将其 ASCII 码加上对应偏移量a[i]。若结果超过'z'的 ASCII 码(122),则通过模运算循环回小写字母范围。

  4. 输出结果:将加密后的字符拼接为字符串并输出。

  5. 时间复杂度:\(O(n \times m)\)

    • n为测试用例数量,m为输入字符串的最大长度。

    • 每个字符串需遍历一次,每次遍历中生成偏移量和字符加密的操作均为\(O(1)\)。

  6. 空间复杂度

    • 原实现:\(O(m)\) 需存储长度为m的偏移量数组。

    • 优化后:\(O(1)\) 通过滚动变量维护前三个偏移量,无需存储完整数组。

参考代码

function solution() {const n = parseInt(readline());const encryptStr = function(str) {const size = str.length;// const dp = Array(size);// dp[0] = 1;// dp[1] = 2;// dp[2] = 4;let a = 1, b = 2, c = 4; // 使用滚动数组优化let result = [];const zCode ='z'.charCodeAt(0);for (let i = 0; i < size; i++) {let currentOffset;if (i === 0) {currentOffset = 1;} else if (i === 1) {currentOffset = 2;} else if (i === 2) {currentOffset = 4;} if (i >= 3) {// dp[i] = dp[i-1] + dp[i-2] + dp[i-3];currentOffset = a + b + c;a = b;b = c;c = currentOffset;}let code = str[i].charCodeAt(0) + currentOffset; // dp[i];if (code > zCode) {code = (code - zCode - 1) % 26 + 97;}const s = String.fromCharCode( code );result.push(s);}return result.join('');};for (let i = 0; i < n; i++) {console.log(encryptStr(readline()));}
}const cases = [`1xy`,`2xyabcde`
];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.yidumall.com/news/97011.html

相关文章:

  • 学做网站要学什么语言谷歌搜索入口 镜像
  • 日本真人做爰无遮挡视频免费网站怎么做网站优化
  • web网站开发能实现上传文件石家庄百度搜索引擎优化
  • 360网站怎么做链接html网页制作app
  • 专业网站建设在哪里谷歌搜索引擎网页版入口
  • 自己做的网站不备案不能访问吗互联网广告推广是什么
  • 外贸公司取名字参考大全上海seo培训中心
  • 开网络公司做网站挣钱么西安seo计费管理
  • 公司怎样做网站关键词seo排名优化推荐
  • 学做投资网站好seo发包软件
  • 做网站哪些方面会侵权获客引流100种方法
  • 如何做网站的搜索栏百度知道一下首页
  • 出口外贸营销网站企业微信scrm
  • 福州营销网站建设模板seo模拟点击软件
  • 南宁网站推广公司东莞疫情最新消息今天又封了
  • 网站开发招聘实习如何制作网页最简单的方法
  • 扶贫基金会网站建设是哪家公司百度推广助手电脑版
  • 门户网站开发文档百度识图鉴你所见
  • wordpress的子主题seo技术培训茂名
  • 做一个公司网站电脑系统优化软件哪个好用
  • 成都网站建设设计中国搜索引擎市场份额
  • 如何看客户网站开发客户温州百度推广公司电话
  • 用wordpress复制一个网站网站免费搭建
  • 一起做网店类型的网站网站建设seo优化培训
  • 织梦整形医院网站开发百度下载
  • 暖色调网站欣赏google开户
  • 用dw个人网站怎么做那个推广平台好用
  • 网站优化推广平台查询网 域名查询
  • 做冷饮的网站网站seo优化方案
  • 福州做商城网站公司寻找客户的渠道和方法