由于这只是我个人用来记录自己刷过的OJ题目,所以一般不会详细的去解释。
ZigZag Conversion
“PAYPALISHIRING”是以一个给定的行数,以Zigzag(即循环对角线结构)写出来的一个字符串:
然后,我们逐行的读,会得到这一个字符串:”PAHNAPLSIIGYIR”。
使用下面这个方法,将一个给定行数的字符串以上面这种方式转换。
string convert(string text, int nRows);
例:
// 返回值是:"PAHNAPLSIIGYIR"
convert("PAYPALISHIRING", 3);
提示图:
最后实现代码如下:
string convert(string s, int numRows)
{
if (numRows == 1)
{
return s;
}
char[] resArray = new char[numRows];
int index = 0;
int gap = numRows - 2;
while (index < s.Length)
{
for (int i = 0; index < s.Length && i < numRows; i++)
{
resArray[i] += s[index++];
}
for (int i = gap; index < s.Length && i > 0; i--)
{
resArray[i] += s[index++];
}
}
string resStr = "";
for (int i = 0; i < s.Length; i++)
{
resStr += resArray[i];
}
return resStr;
}