[Leetcode]ZigZag Conversion 笨方法

class Solution {
public:
    string convert(string s, int numRows) {
        string res;
        int len = s.size();
        if(!len)    return res;
        if(numRows == 1)    return s;
        int n = 2 * numRows - 2;
        int j = 0;
        for(;j <= numRows - 1;++j){
            for(int i = 0;i < len;++i){
                if(i % (n) == j || i % (n) == (n - j)){
                    res += s[i];
                }
            }
        }
        return res;
    }
};

不出所料的效率低下,不过应该可以用哈希表搞一下..唔,用哈希表出现了新问题,暂时无法实现。不过看到这种解法

class Solution
{
public:
    string convert(string s, int nRows)
    {
        vector<string> v(nRows);
        for(int i = 0; i < s.size(); )
        {
            for(int j = 0; i < s.size() && j < nRows; ++i, ++j)
                v[j] += s[i];
            for(int j = nRows-2; i < s.size() && j > 0; ++i, --j)
                v[j] += s[i];
        }

        string res = "";
        for(int i = 0; i < nRows; ++i)
            res += v[i];
        return res;
    }
};

写这个方法的人说,时间复杂度是O(n),这样也算?明明跟我一样用了两层迭代呀,疑惑中。。。不过效率比我的高是确定的,有学习的价值

posted on 2015-10-21 10:44  泉山绿树  阅读(20)  评论(0)    收藏  举报

导航