码迷,mamicode.com
首页 > 编程语言 > 详细

[LeetCode] 006. ZigZag Conversion (Easy) (C++/Java/Python)

时间:2015-02-28 00:17:32      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:leetcode   c++   python   java   算法   

索引:[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 row
		for (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 row
		for (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


[LeetCode] 006. ZigZag Conversion (Easy) (C++/Java/Python)

标签:leetcode   c++   python   java   算法   

原文地址:http://blog.csdn.net/hcbbt/article/details/43975819

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!