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

佛山网站设计公司石油工程建设协会网站

佛山网站设计公司,石油工程建设协会网站,wordpress分类详细信息,建筑模板工目录 🎈了解题意 🎈算法原理 🚩先处理第一行和最后一行 🚩再处理中间行 🎈实现代码 🎈了解题意 大家看到这个题目的时候肯定是很迷茫的,包括我自己也是搞不清楚题目什么意思,我…

目录

🎈了解题意

🎈算法原理

🚩先处理第一行和最后一行

🚩再处理中间行

🎈实现代码


🎈了解题意

大家看到这个题目的时候肯定是很迷茫的,包括我自己也是搞不清楚题目什么意思,我们静下心来看看我来给大家说透彻这个题目的意思。

我们输入字符串"ABCDEFGHIJKL",行数是四行时,我们是按照Z字形排列。先向下排四行,然后斜向上排列到四行之后,然后向下排列四行......。(我们用一块一块的方格来填字符)

然后我们输出的是像数组一样遍历 输出结果是 AGBFHLCEIKDJ 字符串。


🎈算法原理

我们举例输入的是   ABCDEFGHIJKMNOP  这段字符串,我们输出的字符串就是从第一行第一列遍历到最后一行最后一列。

🚩先处理第一行和最后一行

我们从第一行分析,我们看到 AGM之间的距离 A和G之间的距离是6,G与M之间的距离是6,我们就可以看到对于第一行来说,我们只需要循环从0开始,每次+6,就给新字符串更新结果。6是相当于公差d=6,6是怎么来的呢?

我们的公差6其实相当于,将F向左移一列,然后俩列一共是8个元素,然后减去2个空格就是公差了那么我们就衍生一个公式  公差d=2n-2 (n代表行数),举一个例子当然是不能足以证明结果,我们给n设定3行,我们看看第一行公差是不是d=2*3-2=4.

我们看到,d=2n-2,n等于3的时候d=4,公差是4,确实验证了我们的猜想。所以第一行每个元素的相差的距离是2n-2的距离(n代表行数)

        string ret;//定义个最终字符串结果int d=2*numRows-2,n=s.size();//公差为2n-2,n代表原字符串的长度//1.先处理第一行for(int i=0;i<n;i+=d)//每次都加上公差{ret+=s[i];//更新结果}

 同样的,我们看到最后一行其实和第一行是同样的原理。

        //处理最后一行for(int i=numRows-1;i<n;i+=d){ret+=s[i];}

🚩再处理中间行

我们看到BHN绿色线指向的,B和H相差6,H和N相差6,和第一行和最后一行一样的思路,那么我们中间的FL和EK紫色线画的,我们看到F和L相差的结果也是6,EK相差的结果也是6,所以还是再循环的时候加上公差d,那么我们如何确定F和E下标的值呢?还是和上面一样的,我们是如何计算公差的呢?移动数据。字符在哪一列,我们就看前面列数的总空格数减去空白格即可。

  • G= 前面有3列一共有3*4=12格  减去  前面列数的空格数6 = 6 字符G的下标是处在原字符串下标6的位置
  • F= 前面有2列一共有2*4=8格  减去  前面列数的空格数3  =5 字符F的下标是处在原字符串下标5的位置

那么F相当于2n-3=5(n等于4,三个空格),E相当于n-0=4 (n等于4,0格空格)

我们如何确定F和E的开始值呢?

对于第二行 F的下标是5,公差是6, 相当于6-1=5

对于第三行 E的下标是4 ,公差是6   相当于6-2=4

所以我们进行依次循环,处理中间行,从k=1开始,第二行的第二个元素是d-k,到k=2时,第三行的第三个元素是d-k,然后当k=n-1=3的时候就结束了,因为第四行是最后一行。

     for(int k=1;k<numRows-1;k++){for(int i=k,j=d-k;i<n||j<n;i+=d,j+=d){if(i<n)ret+=s[i];if(j<n)ret+=s[j];}}

我们是先让i对应的值先更新,然后再更新j对应的值,条件是i<n或者j<n,因为只要其中一个满足的话,我们还是要更新结果。下面要进行判断,否则就重复更新了。 


🎈实现代码

class Solution {
public:string convert(string s, int numRows) {if(numRows==1)return s;string ret;int d=2*numRows-2,n=s.size();//1.先处理第一行for(int i=0;i<n;i+=d){ret+=s[i];}//2.处理中建行for(int k=1;k<numRows-1;k++){for(int i=k,j=d-k;i<n||j<n;i+=d,j+=d){if(i<n)ret+=s[i];if(j<n)ret+=s[j];}}//处理最后一行for(int i=numRows-1;i<n;i+=d){ret+=s[i];}return ret;}
};

开学坏,见面好。

http://www.yayakq.cn/news/676589/

相关文章:

  • 帝国cms 网站地图标签卡片风格网站
  • wpf入可以做网站吗汤阴有没有做网站的公司
  • 陕西企业网站建设价格网站栏目设计内容
  • 浦东新区网站开发h5响应式集团网站推荐
  • 成都企业网站建设 四川冠辰科技烟台市政建设招标网站
  • 转业做网站的工具网站头部优化文字怎么做
  • 买域名网站网站本身对网站打开速度有何影响
  • 做奢侈品代工厂的网站设计网站的功能有哪些内容
  • 演示公司soap公司网站西安建设网站的公司哪家好
  • 网站备案要到哪里logo在线制作设计
  • 商务网站的特点购物网站建设价位
  • 网站建站历史网站轮播图
  • 公司做铸造的招聘网站都有哪些品牌商城网站制作
  • 有哪些建筑设计网站WordPress stock
  • 韩国男女直接做的视频网站电销系统哪个好
  • app开发公司属于什么行业百家号优化上首页
  • 网站建设公司赚钱吗温州论坛招聘
  • 做网站用的是什么语言网站建设多少钱个人
  • 做阿里巴巴网站应怎样定位烟台北京网站建设公司哪家好
  • 南京建设项目环评公示期网站网站建设分金手指科捷13
  • 奔驰宝马游戏网站建设对网站建设公司说
  • vr超市门户网站建设wordpress建站位置
  • 一个网站开发的意义科技感的网站
  • 手机怎样建设网站营销型网站开发流程
  • 莱芜网站建设电话戏曲网站建设的可行性分析
  • 物流建设网站有没有做软件的网站
  • 郑州中扬科技网站建设公司怎么样教育机构网站建设公司
  • 公司网站内容更新该怎么做省内新闻最新消息
  • 免费贴图素材网站安卓手机app开发用什么软件
  • 网站推广公司就去柚米盘锦网站建设策划