1. 程式人生 > >[leetcode]Z字形變換(Zigzag Conversion)

[leetcode]Z字形變換(Zigzag Conversion)

Z字形變換(Zigzag Conversion)

將字串 "PAYPALISHIRING" 以Z字形排列成給定的行數:

P   A   H   N
A P L S I I G
Y   I   R

之後從左往右,逐行讀取字元:"PAHNAPLSIIGYIR"

實現一個將字串進行指定行數變換的函式:

string convert(string s, int numRows);

示例 1:

輸入: s = "PAYPALISHIRING", numRows = 3
輸出: "PAHNAPLSIIGYIR"

示例 2:

輸入: s = "PAYPALISHIRING", numRows = 4
輸出:
 "PINALSIGYAHRPI" 解釋: P I N A L S I G Y A H R P I
class Solution {
public:
    string convert(string s, int numRows) {
                string re;
        int ll=2*numRows-2;//兩整列之間的差
        if(numRows<=1)return s;
        for(int i=0;i<numRows;i++)
        {
            for(int j=i;j<s.length();j+=ll)
            {
                re+=s[j];
                int mid = j + ll - 2 * i;
            if (i != 0 && i != numRows - 1 && mid < s.length()) //中間字母
                re += s[mid];
            }
        }
        return re;
    }
};