【LeetCode】C# 6、ZigZag Conversion

来源:互联网 发布:三维动画演示软件 编辑:程序博客网 时间:2024/06/06 17:24

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”.

解题的关键在对zigzag的理解,思路在于,nRows有多少就遍历s几次,行数对应上就把对应的char添加到result中,遍历nRows次即可。

public class Solution {    public string Convert(string s, int nRows) {        if (nRows == 1)            return s;        int currRow;        bool goDown;        string ret = "";        for (int r = 1; r <= nRows; r++)        {            currRow = 1;            goDown = true;            for (int i = 0; i < s.Length; i++)            {                if (currRow == r)                    ret += s[i];                if (currRow != nRows && goDown)                    currRow++;                else if (currRow == nRows)                {                    currRow--;                    goDown = false;                }                else if (currRow != 1 && !goDown)                    currRow--;                else if (currRow == 1)                {                    currRow++;                    goDown = true;                }            }        }        return ret;    }}

zigzag解析

原创粉丝点击