给定一个字符串和一个行数,表示按照zigzag的方式扫描的结果,编写算法输出按行扫描的结果。
首先要先明白zigzag的顺序,
明白了zigzag扫描后,要确定zigzag中字符和按行扫描字符的对应关系。有两点:
1). 每行中的列元素都会有对应的间隔span =
2). 中间行每一个span前还会有一个元素,间隔为
class Solution {
public:
string convert(string s, int numRows) {
int i,j;
string str="";
if(s.length() == 0) return "";
if(numRows == 1) return s;
int span = 2*numRows-2;
for(int i = 0; i <numRows; i++)
{
j = i;
while(j < s.length())
{
str = str+s[j];
j += span;
if(i != 0 && i != numRows-1)
if(j-2*i < s.length()) str = str + s[j - 2*i];
} //cout<<"i:"<<i<<"str:"<<str<<endl;
}
return str;
}
};
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/jeanphorn/article/details/46660157