C++
这个题主要就是将字符串从第一行往下排序,然后再往上排不断循环形成Z字形变换。所以创建一个字符串数组存放每一行的字符,然后依次相加就能得到最后的Z字形后的字符串顺序
class Solution {
public:
string convert(string s, int numRows) {
if(numRows<2) return s;
string ans;
vector<string> res(numRows); //这里必须要先定义长度,因为后面用到了索引。否则会报错
int i = 0;
int flag = -1;
for(auto c:s){
res[i] += c;
if(i==0||i==numRows-1)
flag = -flag;
i += flag;
}
for(int j = 0;j<numRows;j++)
ans += res[j];
//for (string r : res)
// ans += r;
return ans;
}
};
Python
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows < 2: return s
res = ['' for x in range(numRows)]#设置固定长度的数组,都为空
i, flag = 0, -1
for d in s:
res[i] += d
#到第一行或最后一行时,换方向
if i == 0 or i == numRows - 1: flag = - flag
i += flag
return ''.join(res) #join函数用法,以前面作为分隔符,连接res