首页 > 其他分享 >6.Z字形变换

6.Z字形变换

时间:2022-11-08 14:01:26浏览次数:88  
标签:字符 字形 变换 res numRows int string size

思路 - 找规律

  • 找规律题

每一行都是等差数列

样例

输入:s = "PAYPALISHIRING", numRows = 3
输出:"PAHNAPLSIIGYIR"
解释:
P   A   H   N
A P L S I I G
Y   I   R

第一行和最后一行字符间的距离是2*numRows - 2

中间几行:

  • 先除去斜线上的字符,字符间距离也是2*numRows - 2

  • 第i行对应的斜线字符起点是2*numRows-2-i,斜线上字符间距也是2*numRows - 2

  • numRows = 1时\((2*n)-2 = 0\), 会进入死循环, 因此需要特判

class Solution {
public:
    string convert(string s, int n) 
    {
        if(n == 1) return s;
        string res;
        int size = s.size();
        for(int i = 0; i < n; i++)
        {
            if(i == 0 || i == n - 1)
            {
                for(int j = i; j < size; j += 2 * n - 2)
                    res += s[j];
            }
            else
            {
                for(int j = i, k = 2 * n - 2 - i; j < size || k < size; j += 2 * n - 2 , k += 2 * n - 2)
                {
                    if(j < size) res += s[j];
                    if(k < size) res += s[k];
                }
            }
        }
        return res;
    }
};

标签:字符,字形,变换,res,numRows,int,string,size
From: https://www.cnblogs.com/INnoVationv2/p/16869455.html

相关文章

  • CSS3的 transform属性,怎么才能让他同时执行多个不同动画(变换属性)效果
    如果要给一个dom元素,同时设置多个不同的CSS变换(transform)属性时,在属性中间用空格隔开即可,旋转缩放扭曲等同时执行多个效果!div{width:100px;height:1......
  • LG P4717 【模板】快速莫比乌斯/沃尔什变换 (FMT/FWT)
    \[C_k=\sum_{i|j=k}A_iB_j\]这样的或卷积可以做一次\(\text{FWT}\),把数组变为\(a_i=\sum_{j\subseteqi}A_i\),也就是子集和的形式,然后就可以对应位相乘了变回去的......
  • NOIP 字串变换
    思路因为有很多的相似部分不妨用define定义一下,会很好.Code#include<bits/stdc++.h>usingnamespacestd;#defineMAXN32005#defineF(i,a,b)for(inti=a;i......
  • 观察变换的理解与存在价值
    假设我们已经用世界坐标系变换把模型放在了场景的某处(x,y,z):  然后我们要在camera(x,y,z)这个点去看这个物体,并且设置好相机的朝向(Dir,Up,Right)、那么以相机为原点也会......
  • 理解opengl坐标变换(从逆变换入手)--实现鼠标点击发射射线的算法
    首先上结果(不会在博客园传视频、具体流程是鼠标点击屏幕上的任意一个点、向此处投射一条射线):   实现的方法:首先认清楚什么是一条射线、由于我们不是真的要画一条......
  • 点云_四元数和旋转矩阵变换
    旋转矩阵转换为四元数{"Array":[-0.726405369155686,0.6872664061155301,0.000355930941022522,6855.053677575546,-0......
  • BM-27-之字形打印二叉树
    用两个栈来模拟队列,利用了一个栈倒叙一个栈正序的特点,注意压栈顺序也有改变就是感觉写出来代码有些重复vector<vector<int>>Print(TreeNode*pRoot){ vector<vector<......
  • PyTorch: 张量的变换、数学运算及线性回归
    本文已收录于Pytorch系列专栏:​​Pytorch入门与实践​​专栏旨在详解Pytorch,精炼地总结重点,面向入门学习者,掌握Pytorch框架,为数据分析,机器学习及深度学习的代码能力打下......
  • Eigen中旋转矩阵、四元数与变换矩阵的使用
    目录介绍一、旋转向量1.0初始化旋转向量1.1旋转向量转旋转矩阵1.2旋转向量转欧拉角(Z-Y-X,即RPY)1.3旋转向量转四元数二、旋转矩阵2.0初始化旋转矩阵2.1旋转矩阵转旋......
  • 傅里叶变换
    原文:https://blog.csdn.net/jk_101/article/details/124803761傅里叶变换是将按时间或空间采样的信号与按频率采样的相同信号进行关联的数学公式。在信号处理中,傅里叶变换......