Leetcode-6 Z字形變換

題目鏈接

我の解

感覺就是找規律欸,雖然一開始我並沒有看懂Z是個啥。與其說是Z,我覺得是個L變換。
如圖所示,紅色的爲一組,利用numRows可算出組的大小。
對於每一個s[i]計算它所在的行數,開一個vector<string>數組,將s[i]加入str[行]。
最終將每一行加起來得到結果。

在這裏插入圖片描述

class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows<=1) return s;
        vector<string> str(numRows,"");
        int part=numRows*2-2;
        int index;
        for(int i=0;i<s.length();i++)
        {
            if(i%part<numRows)
                index=i%part;
            else
                index=numRows*2-i%part-2;
            str[index]+=s[i];
        }
        for(int i=1;i<str.size();i++)
        {
            str[0]+=str[i];
        }
        return str[0];
    }
};

參考題解

當字符填在0和n-1行時發生轉折

class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows<=1) return s;
        vector<string> str(numRows,"");
        bool godown=true;
        int level=0;
        for(int i=0;i<s.length();i++)
        {
            str[level]+=s[i];
            level=godown?level+1:level-1;
            if(level==0||level==numRows-1)
                godown=!godown;
            
        }
        for(int i=1;i<str.size();i++)
        {
            str[0]+=str[i];
        }
        return str[0];
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章