您的位置:首页 > 职场人生

leetcode之ZigZag Conversion

2016-01-25 15:17 513 查看
题目:

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   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 numRows) {
int len = s.length();
if(numRows == 1)
return s;
string res = "";
for(int i = 0;i < numRows; ++i)
{
int p = i;
bool choose = true;
if(i == numRows - 1)
choose = false;
while(p < len)
{
if(choose)
{
res += s[p];
p = p + (numRows - i - 1) * 2;
if(!(i == 0 || i == numRows - 1))
choose = !choose;
}
else
{
res += s[p];
p = p + i * 2;
if(!(i == 0 || i == numRows - 1))
choose = !choose;
}
}
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 算法 面试