leetcode6. ZigZag Conversion
来源:互联网 发布:易了千明编程论坛 编辑:程序博客网 时间:2024/05/29 13:28
leetcode6. ZigZag Conversion
理解题意:
zigzag即为z字形,所以n>3的情况下,原始字符串的下标排列如下(n=4):
0 6 1 5 7 2 4 8 3 9.........
思路1:
1.对于n行,我们分别找出第n行对应的每一个元素在原始字符串中的下标的规律,然后依次按行遍历按列打印即可。
规律为:第一行和最后一行,都是间隔2(n-1)个元素;其他行如行k,两个间隔为2(n-1)的元素之间还有一个元素,该元素与该行前一个元素的距离为2(n-1 - k);源码如下:
class Solution {public: string convert(string s, int numRows) { int pos = 0; int i=0; int halfSizeInOneCycle = numRows - 1; int sizeInOneCycle = 2*halfSizeInOneCycle; string result; int len = s.size() - 1; while(i<numRows){ pos = i; while(pos <= len){ result += s[pos]; if(i != halfSizeInOneCycle && i != 0 && pos + sizeInOneCycle - 2 * i <= len){ result += s[pos + sizeInOneCycle - 2 * i]; } if(sizeInOneCycle > 0) pos += sizeInOneCycle; else pos += 1; } i++; } return result; }};
思路2:
分别对每一行构造一个字符串,从上述排列情况可以看出规律为:若遍历字符串s,则每个字符落入的排列位置在上下波动,每到0和第n行则折回,且每到一个字符,对应的行号会改变,这样,我们可以在遍历整个字符串s过程中,把循环过程中的当前字符追加到对应行的尾部,关键是找到正确的行号。字符和行号对应关系如下:
字符下标 字符落入的行号0 01 1 = 0+12 2 =1+13 3 =2+14 2 =3-1 此处波形折返5 1 =2-16 0 =1-17 1 =0+1此处波形折返。。。。。。n j n+1 h =j+(step) step根据折返情况而定,每次折返时,都会取step = 0-step;
那么,遍历整个字符串,就可以得到每一行对应的子字符串了。
阅读全文
0 0
- LeetCode6:ZigZag Conversion
- leetcode6-ZigZag Conversion
- leetcode6 Zigzag Conversion
- [Java]leetcode6 ZigZag Conversion
- ZigZag Conversion leetcode6
- leetcode6 ZigZag Conversion
- LeetCode6:ZigZag Conversion
- LeetCode6. ZigZag Conversion
- leetcode6. ZigZag Conversion
- Leetcode6: ZigZag Conversion
- leetcode6. ZigZag Conversion
- leetcode6. ZigZag Conversion
- Leetcode6、ZigZag Conversion
- LeetCode6. ZigZag Conversion
- ZigZag Conversion(leetcode6)
- LeetCode6—ZigZag Conversion
- leetcode6. ZigZag Conversion
- LeetCode6——ZigZag Conversion
- SpringMVC配置prefix <property name="prefix" value="/WEB-INF/jsp/" />页面跳转时不显示提示信息
- Centos 编译安装Nutch2.x 入坑指南(1)
- 高效的多维空间点索引算法 — Geohash 和 Google S2
- MySql 开启外网访问
- 读懂 ECMAScript 规格
- leetcode6. ZigZag Conversion
- c++primer 习题答案
- C语言基础之宏定义(附代码)
- Jsch 创建ssh连接
- 面向对象编程七大原则
- PEP8中文翻译(转)
- S5PV210-uboot解析(三)-start_armboot解析-gd_t和init_sequence函数指针数组
- PAT乙级题1017.A除以B
- 数字 输入正则控制