【leetcode】Zigzag Conversion

來源:互聯網
上載者:User

Question : 

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P   A   H   NA P L S I I GY   I   R

And then read line by line: "PAHNAPLSIIGYIR"

Write the code that will take a string and make this conversion given a number of rows:

string convert(string text, int nRows);

convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

Anwser 1 :     

class Solution { public:     string convert(string s, int nRows) {         // Start typing your C/C++ solution below         // DO NOT write int main() function             string ret(s);                  int stepArray[2];         int steps = 2 * nRows - 2;                  int retSize = 0;         for(int i = 0; i < nRows; i++)         {             int num = nRows - (i + 1) + nRows - (i + 1) - 1;             num++;             stepArray[0] = num;             if (stepArray[0] == 0)                 stepArray[0] = steps;             stepArray[1] = steps - num;             if (stepArray[1] == 0)                 stepArray[1] = steps;                              int j = i;             int index = 0;             while(j < s.size())             {                 ret[retSize++] = s[j];                 if (j == j + stepArray[index])                     break;                 j = j + stepArray[index];                 index = 1 - index;             }         }                      return ret;     } };

Anwser 2 :     

class Solution {public:    string convert(string s, int nRows) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if (nRows == 1) return s;                vector<vector<char>> v(nRows, vector<char>());                int i = 0;        int d = 0;                for (int j = 0; j < s.size(); j++) {            v[i].push_back(s[j]);                        if (d == 0) {                if (i + 1 == nRows) {                    i--;                    d = 1;                } else {                    i++;                }            } else {                if (i == 0) {                    i++;                    d = 0;                } else {                    i--;                }            }        }                string ret = "";                for (int j = 0; j < nRows; j++) {            for (int k = 0; k < v[j].size(); k++)                ret += v[j][k];        }                return ret;    }};

參考推薦:

pay pal interview question

[LeetCode] Zigzag Conversion

[LeetCode] ZigZag Conversion

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.