LeetCode 6[找规律] Z字形变换 HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 6[找规律] Z字形变换 HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路
一道仔细观察规律就可以解决的问题,其实字符串不是按照N,而是按照V组成的,也就是说,最小的周期是V型,T为2*numRows-2
,这样按照周期规律就可以把每行的字符找出来,再观察还能发现,对于每个V,从上往下划横线,除了第一行和最后一行只有一个点,其他位置都是两个点且对称,那么我们在遍历的时候,只要不超过字符串长度,对于非第一行和最后一行,还要找出其对称的字符。注释已经很详尽了, 代码如下:
代码
class Solution
public:
string convert(string s, int numRows)
int n = s.size();
// 如果正好一行或者一列
if(numRows == 1 || n <= numRows)
return s;
// 一个周期
int T = 2 * numRows - 2;
string ans;
// 遍历每一行
for(int i = 0; i < numRows; i ++)
// 遍历每个周期i行上的字符
for(int j = 0; j + i < n; j += T)
ans += s[i + j];
// 相邻字符
if(i > 0 && i < numRows - 1 && j + T - i < n)
ans += s[j + T - i];
return ans;
;
以上是关于LeetCode 6[找规律] Z字形变换 HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章