LeetCode 6 ZigZag Conversion(Z型轉換) -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.solarmaxlimited.com - 電腦資料】

    翻譯

<code class="hljs" mathematica="">字符串“PAYPALISHIRING”通過一個給定的行數寫成如下這種Z型模式:P   A   H   NA P L S I I GY   I   R然后一行一行的讀取:“PAHNAPLSIIGYIR”寫代碼讀入一個字符串并通過給定的行數做這個轉換:string convert(string text, int nRows);調用convert(PAYPALISHIRING, 3),應該返回PAHNAPLSIIGYIR,

LeetCode 6 ZigZag Conversion(Z型轉換)

。</code>

    原文

<code applescript="" class="hljs">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   RAnd then read line by line: PAHNAPLSIIGYIRWrite 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.</code>

    如果還是沒明白題目的意思,看下圖吧……

   

<code class="hljs" cs="">public class Solution{    public string Convert(string s, int numRows)    {        if (numRows == 1)            return s;        StringBuilder strBuilder = new StringBuilder();        int lengthOfGroup = 2 * numRows - 2;        // 如上圖所示,每組的長度為4             for (int row = 0; row < numRows; row++)      // 按從第0行到numRows-1行的順序遍歷          {            if (row == 0 || row == numRows - 1)        // 此處負責第0行和numRows-1行            {                for (int j = row; j < s.Length; j += lengthOfGroup)                {                    strBuilder.Append(s[j]);                }            }            else                   // 此處負責第0行和numRows-1行之間的所有行            {                int currentRow = row;           // 在當前行中向右移動(看上圖)                bool flag = true;                int childLenOfGroup1 = 2 * (numRows - 1 - row);                //  怎么說呢……中間行的各個索引吧                int childLenOfGroup2 = lengthOfGroup - childLenOfGroup1;                while (currentRow < s.Length)                {                    strBuilder.Append(s[currentRow]);                    if (flag)                        currentRow += childLenOfGroup1;                    else                        currentRow += childLenOfGroup2;                    flag = !flag;                }            }        }        return strBuilder.ToString();    }}</code>

    C++的代碼肯定是有的:

<code class="hljs" cs="">class Solution {public:    string convert(string s, int numRows) {              if(numRows==1)            return s;        string str=;        int lengthOfGroup=2*numRows-2;        for(int row=0;row<numrows;row++){ bool="" childlenofgroup1="2*(numRows-1-row);" childlenofgroup2="lengthOfGroup-childLenOfGroup1;" code="" currentrow="row;currentRow<s.length();currentRow+=lengthOfGroup){" else="" flag="true;" int="" return="" row="=0||row==numRows-1){"></numrows;row++){></code>

    至于Java嘛,當然也有……不過每次我都是直接把C#的代碼拷貝過去然后改改就好了,

電腦資料

LeetCode 6 ZigZag Conversion(Z型轉換)》(http://www.solarmaxlimited.com)。

<code class="hljs" cs=""><code class="hljs" cs="">public class Solution {    public String convert(String s, int numRows) {          if (numRows == 1)              return s;          StringBuilder strBuilder = new StringBuilder();          int lengthOfGroup = 2 * numRows - 2;                 for(int row=0; row < numRows; row++){              if (row == 0 || row == numRows - 1){                  for(int currentRow = row; currentRow < s.length(); currentRow += lengthOfGroup){                      strBuilder.append(s.charAt(currentRow));                  }              }              else{                  int currentRow = row;                          boolean flag = true;                  int childLenOfGroup1 = 2 * (numRows - 1 - row);                             int childLenOfGroup2 = lengthOfGroup - childLenOfGroup1;                  while (currentRow<s.length()){ code="" currentrow="" else="" flag="!flag;" if="" return=""></s.length()){></code></code>

最新文章
国产v亚洲v天堂无码网站,综合亚洲欧美日韩一区二区,精品一级毛片A久久久久,欧美一级待黄大片视频
色综合久久中文字幕综合网 | 亚洲综合色婷婷在线观看 | 日韩欧美国产一二三区 | 日本中文无线码在线观看 | 日本久久A级推油电影 | 亚洲精品中文字幕无乱码 |