LeetCode Online Judge 题目C# 练习 - ZigZag Conversion

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   N
A P L S I I G
Y    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".

 1         public static string ZigZagConversion(string s, int nRows)

 2         {

 3             if (nRows == 1)

 4                 return s;

 5 

 6             int currRow;

 7             bool goDown;

 8             string ret = "";

 9 

10             for (int r = 1; r <= nRows; r++)

11             {

12                 currRow = 1;

13                 goDown = true;

14                 for (int i = 0; i < s.Length; i++)

15                 {

16                     if (currRow == r)

17                         ret += s[i];

18 

19                     if (currRow != nRows && goDown)

20                         currRow++;

21                     else if (currRow == nRows)

22                     {

23                         currRow--;

24                         goDown = false;

25                     }

26                     else if (currRow != 1 && !goDown)

27                         currRow--;

28                     else if (currRow == 1)

29                     {

30                         currRow++;

31                         goDown = true;

32                     }

33                 }

34             }

35 

36             return ret;

37         }

代码分析:

  分几行就撸几次,每次都从头到尾撸string s 一次。 一个currRow,每当currRow hit 当前的行r, ret += s[i]; 一个goDown flag 看着currRow该++还是--;

  马勒隔壁,终于完了。

你可能感兴趣的:(conversion)