题目链接: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)
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”.
(1)思路:思路比较简单,就是根据行数申请相应个字符串数组,然后由行数头尾循环把输入的字符串字母添加给相应的字符串数组中,最后按顺序输出字符串数组中的元素即可。
(2)代码:
class Solution {
public:
string convert(string s, int numRows) {
int size = s.length();
if(size==0 || numRows<=1) return s;
string *str=new string[numRows];
int flag=1;
int row=0;
for(int i=0; i<size; i++){
str[row]+=s[i];
row = row+flag;
if(row >= numRows){
row = numRows-2;
flag = -1;
}
if (row < 0){
row = 1;
flag = 1;
}
}
string result;
for(int i=0; i<numRows; i++){
result += str[i];
}
return result;
}
};