[LeetCode] 006. ZigZag Conversion (Easy) (C ++/Java/Python), leetcodezigzag
Index: [LeetCode] Leetcode index (C ++/Java/Python/SQL)
Github: https://github.com/illuz/leetcode
006. ZigZag_Conversion (Easy)
Link:
Title: https://oj.leetcode.com/problems/zigzag-conversion/
Code (github): https://github.com/illuz/leetcode
Question:
Arrange a string in a horizontal line.
Analysis:
Directly simulate it.
Code: C ++:
class Solution {public:string convert(string s, int nRows) {if (nRows == 1) return s;int step = nRows * 2 - 2, len = s.length();string ret = "";// first rowfor (int i = 0; i < len; i += step)ret += s[i];for (int i = 1; i < nRows - 1; i++) {for (int j = i; j < len; j += step) {ret += s[j];if (j + (step - i * 2) < len)ret += s[j + (step - i * 2)];}}// last rowfor (int i = nRows - 1; i < len; i += step)ret += s[i];return ret;}};
Java:
public class Solution { public String convert(String s, int nRows) { if (nRows == 1) return s; int step = nRows * 2 - 2, len = s.length(); String ret = ""; // first row for (int i = 0; i < len; i += step) ret += s.charAt(i); for (int i = 1; i < nRows - 1; i++) { for (int j = i; j < len; j += step) { ret += s.charAt(j); if (j + (step - i * 2) < len) ret += s.charAt(j + (step - i * 2)); } } // last row for (int i = nRows - 1; i < len; i += step) ret += s.charAt(i); return ret; }}
Python:
class Solution: # @return a string def convert(self, s, nRows): if nRows == 1: return s step = nRows * 2 - 2 # first row ret = s[::step] for i in range(1, nRows - 1): for j in range(i, len(s), step): ret += s[j] if j + (step - i * 2) < len(s): ret += s[j + (step - i * 2)] # last row ret += s[nRows - 1::step] return ret