6. ZigZag Conversion
来源:互联网 发布:淘宝上卖aj高仿的店铺 编辑:程序博客网 时间:2024/06/13 03:24
The string "PAYPALISHIRING"
is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H NA P L S I I GY I RAnd then read line by line:
"PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3)
should return "PAHNAPLSIIGYIR"
.
题目的意思是把字符串上下上下走之字形状,然后按行输出,比如包含数字0~22的字符串, 给定行数为5,走之字形如下:
现在要按行输出字符,即:0 8 16 1 7 9 15 17 2…….
如果把以上的数字字符看做是字符在原数组的下标, 给定行数为n = 5, 可以发现以下规律:
(1)第一行和最后一行下标间隔都是interval = n*2-2 = 8 ;
(2)中间行的间隔是周期性的,第i行的间隔是: interval–2*i, 2*i, interval–2*i, 2*i, interval–2*i, 2*i, …
class Solution {public:string convert(string s, int numRows) {if (numRows == 1){return s;}int len = s.size();string res(len, ' ');int interval = 2 * numRows - 2;int k = 0;for (int i = 0; i < len; i += interval){res[k++] = s[i];}for (int i = 1; i < numRows - 1; i++){int iter = 2 * i;for (int j = i; j < len; j += iter){res[k++] = s[j];iter = interval - iter;}}for (int i = numRows - 1; i < len; i += interval){res[k++] = s[i];}return res;}};
0 0
- LeetCode 6. ZigZag Conversion
- LeetCode --- 6. ZigZag Conversion
- LeetCode 6.ZigZag Conversion
- [Leetcode] 6. ZigZag Conversion
- 6.ZigZag Conversion
- 6. ZigZag Conversion
- 6. ZigZag Conversion
- 【leetcode】6. ZigZag Conversion
- 6.ZigZag Conversion
- 6. ZigZag Conversion
- 6.ZigZag Conversion
- [LeetCode] 6.ZigZag Conversion
- LeetCode - 6. ZigZag Conversion
- 6. ZigZag Conversion
- 6. ZigZag Conversion
- 6.ZigZag Conversion(93.10%)
- 6. ZigZag Conversion
- [leetcode] 6. ZigZag Conversion
- Oracle解决Ora-01653无法扩展表空间
- windows安装hadoop
- Python写的一个优美的下载器
- ubuntu无法打开software-center
- 最新Chrome离线安装包[官网]
- 6. ZigZag Conversion
- Boot Camp 驱动
- 文章标题
- 光流(四)--Kanade-Lucas-Tomasi(KLT)目标跟踪
- POJ 2352 Star 树状数组
- radio标签获取数据库的值并显示在jsp页面上
- MSM8974 上DeviceTree
- nyoj 84 阶乘的0
- C语言概述和数据类型例题与虚拟空间