class Solution {
public:
string convert(string s, int numRows) {
if( 1 == numRows) return s;
size_t input_size = s.size();
string result(input_size,0);
bool functionSwitch = true;
size_t output_counter = 0;
size_t input_counter = 0;
for(int row_counter = 1; row_counter <= numRows; row_counter++)
{
functionSwitch = true;
output_counter = row_counter - 1;
while(output_counter < input_size)
{
if(functionSwitch)
{
result[input_counter] = s[output_counter];
functionSwitch = false;
if(row_counter == numRows) continue;
output_counter += 2*(numRows - row_counter);
}
else
{
result[input_counter] = s[output_counter];
functionSwitch = true;
if(row_counter == 1) continue;
output_counter += 2*(row_counter - 1);
}
input_counter++;
}
}
return result;
}
};
댓글 0