题解——Leetcode 6. ZigZag Conversion 难度:Medium
来源:互联网 发布:安卓手机运行java应用 编辑:程序博客网 时间:2024/06/07 01:14
The string "PAYPALISHIRING"
is written in a zigzag pattern on a given number of rows like this:
P A H NA P L S I I GY I R
And 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"
.本题输入是字符串,按照反复的“向下->向右上”模式排列,然后逐行输出。
题目看似复杂,其实只要把握住一个关键——字符串的走势。
我们将指针str指向一个字符串数组,其中每个字符串存储经过zigzag变换的字符串的一行。其实我们不用关心每行中各字符间隔是多少,只要明确其先后顺序即可。本解法模拟了字符串放置的方式,变量row表示字符串中字符正放置在哪行,变量step表示下次放置的位置相对于这次的步长(下一行步长为1,上一行步长为-1)。遍历字符串,开始时row=0,step=1,每次循环row递增1,直到row=numRows-1,这时row开始每次递减1,直到row=0,如此往复,将字符串中的字符放在相应的row中,最后按行遍历字符串即可。
class Solution {public: string convert(string s, int numRows) { if(numRows <= 1) return s; int len = s.length(); string *str = new string[numRows]; int row = 0, step = 1; for(int i = 0; i < len; i++){ str[row].push_back(s[i]); if(row == 0) step = 1; if(row == numRows - 1) step = -1; row = row + step; } s.clear(); for(int j = 0; j < numRows; j++) s.append(str[j]); delete []str; return s; }};
0 0
- 题解——Leetcode 6. ZigZag Conversion 难度:Medium
- LeetCode题解——6ZigZag Conversion
- LeetCode题解-6. ZigZag Conversion
- 6. ZigZag Conversion LeetCode题解
- Leetcode题解-6. ZigZag Conversion
- 【LeetCode】6.ZigZag Conversion(Medium)解题报告
- LeetCode刷题(C++)——ZigZag Conversion(Medium)
- LeetCode题解:ZigZag Conversion
- LeetCode题解:ZigZag Conversion
- 【LeetCode】ZigZag Conversion 题解
- 题解——Leetcode 529. Minesweeper 难度:Medium
- 题解——Leetcode 2. Add Two Numbers 难度:Medium
- 题解——Leetcode 526. Beautiful Arrangement 难度:Medium
- 题解——Leetcode 5. Longest Palindromic Substring 难度:Medium
- 题解——Leetcode 12. Integer to Roman 难度:Medium
- 题解——Leetcode 16. 3Sum Closest 难度:Medium
- 题解——Leetcode 18. 4Sum 难度:Medium
- leetcode—zigzag conversion
- 图片旋转,压缩,保存,拷贝+dp2px
- 2017-04-28欠博客一篇
- mysql下载、安装、配置
- 2017-04-28欠博客一篇
- hdu 1032 The 3n+1 problem
- 题解——Leetcode 6. ZigZag Conversion 难度:Medium
- 2017-04-28欠博客一篇
- Ubuntu 查看端口占用情况
- linux command
- 在iOS中 XML文件的解析和写入
- 英语总结系列(二十八):改变自己
- SHTML 教程
- ios Signing for "" requires a development team. Select a development team in the project editor.
- jQuery_样式