https://leetcode.com/problems/zigzag-conversion/

Visit by row:

  1. //12 ms 8 MB
  2. class Solution {
  3. public:
  4. string convert(string s, int numRows) {
  5. if(numRows == 1)
  6. return s;
  7. string result = "";
  8. int str_len = s.length(); //total length
  9. int cyc_len = 2*numRows - 2; //corner length
  10. for (int i = 0; i < numRows; i++){
  11. for (int j = 0; i + j < str_len; j += cyc_len){
  12. result += s[i + j];
  13. if(i != 0 && i != numRows - 1 && j + cyc_len - i < str_len)
  14. result += s[j + cyc_len - i];
  15. }
  16. }
  17. return result;
  18. }
  19. };
  • Time Complexity: O(n)
  • Space Complexity: O(n)