【Leetcode】6.Z字形变换
2019-01-31 15:56
302 查看
题目描述
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。
请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = “LEETCODEISHIRING”, numRows = 3
输出: “LCIRETOESIIGEDHN”
示例 2:
输入: s = “LEETCODEISHIRING”, numRows = 4
输出: “LDREOEIIECIHNTSG”
解释:
L D R
E O E I I
E C I H N
T S G
算法设计
按行存储,从第0行开始访问,到达最后一行时掉转方向。
C++代码
class Solution { public: string convert(string s, int numRows) { if(numRows < 1){ return ""; } if(numRows == 1){ return s; } vector<char> vec[numRows]; int row = 0; bool flag = false; for(int i=0;i<s.size();i++){ vec[row].push_back(s[i]); if(row == numRows-1){ flag = true; } else if(row == 0){ flag = false; } if((row < numRows-1) && !flag){ row++; } else{ row--; } } string res = ""; for(int j=0;j<numRows;j++){ vector<char>::iterator it = vec[j].begin(); for(it;it != vec[j].end();it++){ res += (*it); } } return res; } };
相关文章推荐
- Z 字形变换(LeetCode)
- 【leetcode】Zigzag Z 字形变换
- LeetCode题解(python)-6. Z 字形变换
- Z字形变换 - LeetCode
- 【LeetCode】之字形变换
- LeetCode 6 Z字形变换(字符串)
- leetCode第6题,Z字形变换
- LeetCode | 6. ZigZag Conversion(之字形变换)
- leetcode 6. Z 字形变换(Java版)
- LeetCode6. Z 字形变换
- leetcode Z 字形变换
- LeetCode6.python实现:Z 字形变换问题☆☆
- leetcode之路 6. Z 字形变换
- Leetcode 127. Word Ladder 字符变换 解题报告
- leetcode【第七周】Z字形排序字符串
- [LeetCode]103. Binary Tree Zigzag Level Order Traversal--二叉树之字形遍历
- LeetCode 103. Binary Tree Zigzag Level Order Traversal(二叉树之字形遍历)
- [LeetCode] Binary Tree Zigzag Level Order Traversal 二叉树的之字形层序遍历
- LeetCode 281. Zigzag Iterator(之字形迭代器)
- 【LeetCode】72. Edit Distance单词变换的最少操作