leetcode 6. 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)

P   A   H   N
A P L S I I G
Y   I   R
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" .




class Solution {
public:
	string convert(string s, int numRows) {
		if (numRows == 1)
			return s;
		string re;
		int len = 2 * numRows - 2;
		int imax = ceil(s.length() / len);
		for (int j = 0; j < numRows; j++)
			for (int i = 0; i <= imax; i++)
			{
			if (i*len + j >= s.length())
				continue;
			re += s[i*len + j];
			if (j != 0 && j != numRows - 1 && i*len + len - j<s.length())
				re += s[i*len + len - j];
			}

		return re;
	}
};


accept




你可能感兴趣的:(LeetCode)