鋸齒形字符串轉換問題

問題描述:給定一個字符串,以及鋸齒深度n,把該字符串轉換成鋸齒形的模式後按行輸出。

舉例如下:

string str="0123456789";n=4;

鋸齒表述如下:

0         6

1     5  7

2  4     8

3         9                  輸出結果爲:0615724839

實現方法:

(1)注意第一行和最後一行,間隔爲2*(n-1)

(2)其他行數據之間有兩個間隔,m1=2*(n-1-i),m2=2*i;

實現C++代碼爲:

class Solution {
public:
    string convert(string s, int numRows) {
        if (numRows==1 || s.size()<numRows)
        return s;
        string str;
        for (int i=0; i<numRows; i++)
        {
            int m1=2*(numRows-1-i);
            int m2;
            if(i==0 || i==numRows-1)
            {
                m2=2*(numRows-1);
                m1=m2;
            }
            else
                m2=2*i;
            int k=0;
            for(int j=i; j<s.size();)
            {
                str.push_back(s[j]);
                k++;
                if (k%2==1)
                    j+=m1;
                else
                    j+=m2;
            }
        }
        return str;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章