ZigZag Conversion
来源:互联网 发布:淘宝网发货流程 编辑:程序博客网 时间:2024/06/09 14:03
题目描述:
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"
.解题思路:
根据zigzag pattern的规律,把每两列当做一个周期,一个周期包含的字符的个数为rows+rows-2。
对于一个周期的内的字符,除了第一行和最后一行包含一个字符以外,其他行都包含两个字符。
根据周期的长度和行号可以求出每一行的每一个字符在源字符串中的位置。
AC代码如下:
class Solution {public:string convert(string s, int numRows) {string ans;if (numRows == 1){ans = s;return ans;}int a = numRows * 2 - 2;int n = s.size();int j = 0;while (j*a < n){ans.push_back(s[j*a]);j++;}for (int i = 1; i < numRows - 1; i++){j = 0;while (j*a + i < n){ans.push_back(s[j*a + i]);if (j*a + a - i < n){ans.push_back(s[j*a + a - i]);}j++;}}j = 0;while (j*a + numRows - 1 < n){ans.push_back(s[j*a + numRows - 1]);j++;}return ans;}};
0 0
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- Zigzag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- 九九乘法表-javascrip循环结构
- Scala 循环语句
- 关于typedef的用法总结
- 算法导论(4) 顺序统计量
- Android JNI 入门
- ZigZag Conversion
- java中instanceof的用法
- 校验用户输入的生日
- 08.Java 基础 - 反射
- Nand flash 的发展和eMMC
- CODEFORCES 264D Colorful Stones
- HDU 5250 三阶魔方(很有意思的模拟题)
- 眼睛好看是一种什么样的体验?
- 写一个函数,函数功能是将一个排好序的数组打乱