[LeetCode] 006. ZigZag Conversion (Easy) (C++/Java/Python),leetcodezigzag
索引:[LeetCode] Leetcode 題解索引 (C++/Java/Python/Sql)
Github: https://github.com/illuz/leetcode
006.ZigZag_Conversion (Easy)
連結:
題目:https://oj.leetcode.com/problems/zigzag-conversion/
代碼(github):https://github.com/illuz/leetcode
題意:
把一個字串按橫寫的折線排列。
分析:
直接類比就行了。
代碼: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