N

(Leet Code c++)ZigZag Conversion 본문

Leet Code 알고리즘

(Leet Code c++)ZigZag Conversion

naeunchan 2021. 7. 5. 15:21
728x90
반응형

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 s, int numRows);

 

Example 1:

Input: s = "PAYPALISHIRING", numRows = 3 Output: "PAHNAPLSIIGYIR"

Example 2:

Input: s = "PAYPALISHIRING", numRows = 4 Output: "PINALSIGYAHRPI" Explanation: P I N A L S I G Y A H R P I

Example 3:

Input: s = "A", numRows = 1 Output: "A"

 

Constraints:

  • 1 <= s.length <= 1000
  • s consists of English letters (lower-case and upper-case), ',' and '.'.
  • 1 <= numRows <= 1000
class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows == 1){
            return s;
        }
        
        string answer = "";
        int pattern = 2 * numRows - 2;
        
        for(int i = 0; i < numRows; i++){
            for(int j = 0; i + j < s.size(); j += pattern){
                answer += s[i + j];
                
                if(i != 0 && i != numRows - 1 && j + pattern - i < s.size()){
                    answer += s[j + pattern - i];
                }
            }
        }
        
        return answer;
    }
};
728x90
반응형