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 RAnd 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) {
string t[numRows];
int len=s.size(),j=0;
while(j<len){
for(int i=0;i<numRows&&j<len;i++)t[i]+=s[j++];
for(int i=numRows-2;i>0&&j<len;i--)t[i]+=s[j++];
}
string ans;
for(int i=0;i<numRows;i++){
ans+=t[i];
}
return ans;
}
};