[leetcode]Z字形變換(Zigzag Conversion)
阿新 • • 發佈:2018-12-16
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; } };