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

房产网站设计方案百度蜘蛛池自动收录seo

房产网站设计方案,百度蜘蛛池自动收录seo,有关于网站建设的论文,漂亮的网页界面关键字:数学归纳法 一、题目 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: P A H N A P L S I I G Y I R …

关键字:数学归纳法

一、题目

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:

P   A   H   N
A P L S I I G
Y   I   R

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,

比如:"PAHNAPLSIIGYIR"

请你实现这个将字符串进行指定行数变换的函数:

convert(s, numRows);

示例 1:

输入:s = "PAYPALISHIRING", numRows = 3
输出:"PAHNAPLSIIGYIR"

示例 2:

输入:s = "PAYPALISHIRING", numRows = 4
输出:"PINALSIGYAHRPI"
解释:
P     I    N
A   L S  I G
Y A   H R
P     I

示例 3:

输入:s = "A", numRows = 1
输出:"A"

二、思路:使用数学归纳法对Z字形排列进行规律总结

// 3阶Z变形 7个1

// 1    1

// 1 1 1

// 1    1

// 4阶Z变形 10个1

// 1         1

// 1     1  1

// 1  1     1

// 1         1

// 5阶Z变形 13个1

// 1            1

// 1        1  1 

// 1     1     1 

// 1  1        1 

// 1            1

// ........

// n阶Z变形

// 得到公式,n阶:3n-2个1,3n - 2 = n + (n-2) + n

经过以上归纳,我们知道了对于Z字变形的一个数学上的规律,这里的n就是题目中的numRows变量。同时从图形上看,我们可以把一个V形看成一个周期(如下图,表示3个周期),确定这个思想有利于理解后面的逻辑。

1            1             1

1        1  1         1  1        1

1     1     1      1     1     1

1  1        1   1        1   1

1            1             1

三、现在我们知道了这样一个规律,那么我们很容易想到把字符串按照这样的规律放进到一个二维数组里面,所以,我们需要基于我们发现的规律来分析出两个关键点:

  • 二维数组的行列数
  • 每一个字符在二维数组中的位置

四、实现步骤

1、定义一个二维数组,二维数组为arr[n-1][m-1],n为行数,m为列数,s为字符串

m = (Math.floor(s.length / (2n-2)))*(n-1) + (s.length % (2n-2)-n>0?(n-2)+1:(s.length % (2n-2) === 0?0:1);这里把(n + (n-2))看成一个周期

// 粗略一点的话,m也可以直接等于 Math.ceil(s.length/(2n - 2))*(n-1)

2、每个字符在二维数组中的位置(同样用到了数学归纳法)

 假设字符的索引为i:

所在列:col = (Math.floor((i+1) / (2n-2)))*(n-1) + ((i+1) % (2n-2)-n>0?(n-2)+1:((i+1) % (2n-2) === 0?0:1)

所在行:row = (i+1)%(2n-2) <=n?((i+1)%(2n-2)===0?2:(i+1)%(2n-2)):2n-(i+1)%(2n-2) 

3、 遍历字符串,把每个字符放在对应的位置上

4、再按行,从左到右取字符

五、完整代码

let convert = function(s,numRows = 3){let n = numRows;let len = s.length;let m = 0let arr = new Array(n);if(len < (3 * numRows - 2)){return s}m = (Math.floor(len/(2*n-2)))*(n-1)let remainder = len%(2*n-2)if(remainder !== 0){m += (remainder - n > 0?(n-2)+1:1)}for(let i = 0;i < n;i++){arr[i] = new Array(m);}// 遍历字符串for(let i = 0;i < len;i++){let remainder1 = (i+1)%(2*n-2)let col = (Math.floor((i+1)/(2*n-2)))*(n-1) + (remainder1-n>0?(n-2)+1:(remainder1 === 0?0:1))col = col -1 // 从0列开始let row = remainder1 <= n?remainder1:2*n-remainder1if(remainder1 === 0){row = 2}row = row - 1 // 从0行开始arr[row][col] = s[i]}// 按行从左向右取字符串let result = '';for(let i = 0;i < n;i++){for(let j = 0;j < m;j++){if(arr[i][j]){result += arr[i][j]}}}console.log(arr)console.log(result)
}
convert("PAYPALISHIRING",3) //输出:PAHNAPLSIIGYIR
convert("PAYPALISHIRING",4) //输出:PINALSIGYAHRPI

http://www.hkea.cn/news/463878/

相关文章:

  • 网站开发公司 广告词优化方案电子版
  • 做便民工具网站怎么样关键词挖掘站长工具
  • 纺织面料做哪个网站好百度站长资源
  • 菏泽网站建设哪好怎样做平台推广
  • 网上有做logo的网站吗网络营销的核心是什么
  • 自建网站怎么做推广微信营销策略
  • 跳网站查询的二维码怎么做的关键词排名点击软件网站
  • 兼容手机的网站百度怎么推广自己的视频
  • 宝安中心医院入职体检跟我学seo
  • 企业网站后端模板石家庄疫情最新情况
  • 沈阳哪家网站做的好网络营销是指什么
  • 我的网站模板网站建设主要推广方式
  • 国外app素材网站seo运营是做什么的
  • 企业网站seo怎么做百度帐号个人中心
  • 郑州网站建设亅汉狮网络百度网盘seo优化
  • 模板型网站seo优化平台
  • 官方网站下载免费软件培训机构有哪些?哪个比较好
  • 网站导航怎么做的惠州seo计费管理
  • 建设公司网站模板全国唯一一个没有疫情的城市
  • 网站怎么做seo_南京百度提升优化
  • 旅游网站开发与设计论文怎么样建网站
  • 北京网站推广排名公司企业网站的搜索引擎推广与优化
  • 动态网站期末设计广告营销策略
  • 山东网站营销推广费用旺道seo推广
  • 邢台网站建设服务周到百度数据分析工具
  • 周口网站建设竞价恶意点击犯法吗
  • 网站建设没有预付款seo快速提升排名
  • 网站开发者的设计构想网络推广平台软件
  • 做立体字的网站重庆seo公司排名
  • 电子商务网站的建设包含哪些流程搜索引擎关键词怎么优化