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之路的主要内容,如果未能解决你的问题,请参考以下文章

Leetcod6. Z 字形变换(规律题)

6. Z 字形变换

leetcode算法:6.Z 字形变换

leetcode 6: Z字形变换

LeetCode 6 Z 字形变换

LeetCode 6. Z 字形变换(中)