문자열 s와 행의 수 numRows를 받는다.
문자열 s를 numRows 행의 지그재그 패턴으로 만들 때,
위에서부터 행방향으로 읽은 문자열을 만들어 반환하는 문제이다.
예를 들어 ABCDEFGHI
이라는 문자열을 받고 3행 지그재그 패턴으로 만들면 아래와 같고
A E I
B D F H
C G
이를 위에서부터 행방향으로 읽으면 'AEIBDFHCH'가 된다.
class Solution {
public:
string convert(string s, int numRows) {
if (numRows == 1)
{
return s;
}
vector<string> zigzag(numRows);
int rowIndex{0};
int adder{1};
int length = s.size();
for (char& c : s)
{
zigzag[rowIndex] += c;
rowIndex += adder;
if (rowIndex == -1 || numRows == rowIndex)
{
adder *= -1;
rowIndex += (2 * adder);
}
}
string result{};
result.reserve(length);
for (int i = 0; i < numRows; ++i)
{
result.append(zigzag[i]);
}
return result;
}
};