200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > LeetCode 6. Z 字形变换 (N字形变换)

LeetCode 6. Z 字形变换 (N字形变换)

时间:2021-11-03 19:33:43

相关推荐

LeetCode 6. Z 字形变换 (N字形变换)

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:

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

示例 3:

输入:s = “A”, numRows = 1

输出:“A”

// 此题应该是N 字形转换class Solution {public:string convert(string s, int numRows) {string re;if(numRows == 1) return s;// 找规律for(int j =0; j < numRows; j++){if(j == 0 || j == numRows -1 ){for(int i = j; i<s.size(); i += 2 * numRows - 2)re += s[i];}else{for(int i = j, k = 2 * numRows -2 - j; i < s.size() || k < s.size() ;i += 2 * numRows -2, k += 2 * numRows -2){if(i < s.size()) re += s[i]; // 先加前面的if(k < s.size()) re += s[k];}}}return re;}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。