和大神们学习每天一题(leetcode)-ZigZag Conversion
2014-11-27 11:10
513 查看
The string
this: (you may want to display this pattern in a fixed font for better legibility)
And then read line by line:
Write the code that will take a string and make this conversion given a number of rows:
return
"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 N A P L S I I G Y 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".
class Solution { public: string convert(string s, int nRows) { int nsLen = s.length(),nFirst,nStrInd,nBlockLen; if (nsLen <= nRows || nRows == 1)//判断序列长度是否超过行数或者行数是否为1 return s; nBlockLen = 2 * nRows - 2;//将整个序列分块,计算每块的长度 nFirst = nBlockLen;//每行中第二个数据距离第一个数据的间隔 int nsBlock = nsLen / nBlockLen + 1;//计算块数 string sResult = ""; for (int nTemp = 0; nTemp < nRows; nTemp++) { sResult += s[nTemp];//将Z型中每行第一个符号添加到新建序列尾部 for (int nIndex = 0; nIndex < nsBlock; nIndex++) { nStrInd = nTemp + nBlockLen * nIndex + nFirst; if (nFirst != 0 && nStrInd < nsLen && nStrInd >= 0) { sResult += s[nStrInd]; } nStrInd = nTemp + nBlockLen * (nIndex + 1); if (nFirst != nBlockLen && nStrInd < nsLen) { sResult += s[nStrInd]; } } nFirst = nFirst - 2; } return sResult; } };
相关文章推荐
- 和大神们学习每天一题(leetcode)-Add Binary
- 和大神们学习每天一题(leetcode)-Reverse Integer
- 和大神们学习每天一题(leetcode)-Valid Parentheses
- 和大神们学习每天一题(leetcode)-Implement strStr()
- 和大神们学习每天一题(leetcode)-Remove Duplicates from Sorted List
- 和大神们学习每天一题(leetcode)-Symmetric Tree
- 和大神们学习每天一题(leetcode)-Length of Last Word
- 和大神们学习每天一题(leetcode)-Minimum Depth of Binary Tree
- 和大神们学习每天一题(leetcode)-Maximum Depth of Binary Tree
- 和大神们学习每天一题(leetcode)-Plus One
- 和大神们学习每天一题(leetcode)-Sort Colors
- 和大神们学习每天一题(leetcode)-Roman to Integer
- 和大神们学习每天一题(leetcode)-Intersection of Two Linked Lists
- 和大神们学习每天一题(leetcode)-Balanced Binary Tree
- 和大神们学习每天一题(leetcode)-Pascal's Triangle II
- 和大神们学习每天一题(leetcode)-Count and Say
- 和大神们学习每天一题(leetcode)-Binary Tree Level Order Traversal II
- 和大神们学习每天一题(leetcode)-Valid Palindrome
- 和大神们学习每天一题(leetcode)-Remove Duplicates from Sorted Array
- 和大神们学习每天一题(leetcode)-Merge Two Sorted Lists