您的位置:首页 > 其它

算法练习6. ZigZag Conversion 把一串字符反N方向n行排列

2016-05-09 22:22 429 查看


6. 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   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"
.

把一串字符反N方向n行排列:

class
Solution {
public:
string convert(string
s, int
numRows) {
if (numRows <= 1)return
s;
string result;
int i, j, k,len=s.length();
int inter =
numRows*2-2,step=0;
for (i = 0; i <
numRows; i++)
{
if (i!=0&&i !=numRows - 1)
{
step = inter - 2 * i;
j = i;
while (j < len)
{
result += s.at(j);
j = j + step;
step = inter - step;
}
}
else{
step = inter;
j = i;
while (j < len)
{
result += s.at(j);
j += step;
}
}

}
return result;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: