2017年6月19日 星期一

leetcode-6 ZigZag Conversion

題意: 給定一呈現Zigzag形狀的字串,將其一列一列讀,給出結果


解題思路: 算是我寫到現在最水的一題,把zigzag的圖畫一次,就會發現排在第幾列和mod有關,因此能得知元素在第幾列,逐一加進答案字串,即所求,複雜度O(n),其中n為字串長度


C++ code 如下:

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

沒有留言:

張貼留言