ZigZag Conversion
来源:互联网 发布:绵阳九院 知乎 编辑:程序博客网 时间:2024/06/06 22:22
原题链接:https://leetcode.com/problems/zigzag-conversion/
原题题意:
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 8 16
1 7 9 15 17
2 6 10 14 18
3 5 11 13 19
4 12 20
nRows 即行数为5,即将原字符串分为五行。我们发现每一个V形 包含 2*(nRows-1),此例子中就是0~7 一共8个数
另外在两个满列之间包含的数(5 6 7) 有 nRows-2 个(5-2=3个),即除去第一行和最后一行两个数。
那么我们可以按照 行数 进行循环,而且很容易发现规律,在中间行的时候, j+2*(nRows-i-1)
代码如下:
class Solution {public: string convert(string s, int numRows) { if (numRows == 1) return s; string res; int i = 0, j, gap = numRows - 2; for (int i = 0; i < numRows; ++i){ for (int j = i; j < s.length(); j += 2 * (numRows - 1)){ res.push_back(s[j]); if (i>0 && i < numRows - 1){ if (j + 2 * (numRows - i - 1) < s.length()) res.push_back(s[j + 2 * (numRows - i - 1)]); } } } return res; } };
- 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
- 中缀表达式X=A+B*(C-(D+F))/E转后缀表达式之后是什么?
- 哪些工具可以用来进行Bug管理
- [AHK]为通达信软件定义快捷键(发送按键法)
- RAM check failed @ address 0x10000000.
- BigDecimal详解
- ZigZag Conversion
- 面向对象的七大原则
- linux下将无线网卡工作模式切换为监听模式
- iOS UI自动化测试与代码覆盖率
- 小波变换的特点和作用
- Windows下C++多线程同步
- 机器学习第一周笔记
- qt Creator使用CDB调试启动很慢
- 自定义Dialog 实现弹出窗口