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

6. N 字形变换

时间:2023-09-22 21:34:22浏览次数:31  
标签:index 字形 变换 res ++ numRows int length

将一个给定字符串 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"



public class Solution {
    public String convert(String s, int numRows) {
        char[] res = new char[s.length()];
        int index = 0;
        int n = 1;
        int count = 0;
        int padding = 2 * (numRows - 1); // if n(numRows) == 4, padding = 6;
        if(numRows == 1) return s;
        for(int i = 0; i < res.length; i++){
            res[i] = s.charAt(index);
            if(n!=1 && n!= numRows){
                int p = 2 * (numRows - n);
                if(i+1 < res.length && index+p < s.length())
                    res[++i] = s.charAt(index+p);
            }
            index = index + padding;
            if(index >= s.length()){
                index = ++count;
                n++;
            }
        }

        return new String(res);
    }
}

标签:index,字形,变换,res,++,numRows,int,length
From: https://blog.51cto.com/u_16040716/7571632

相关文章

  • 力扣6.N 字形变换(压缩矩阵)
    将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:PAHNAPLSIIGYIR之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请......
  • NTT(快速数论变换)学习
    回顾:FFTFFT(快速傅立叶变换)学习-Isakovsky-博客园(cnblogs.com)目的:将多项式的系数表示法形式转换为点值表示法形式,或者说,快速计算出多项式在若干个点上的值.中心思想:适当地选取自变量,使得自变量两两互为相反数,求出的多项式值可重复利用,减少运算次数例如上面那篇......
  • 快速数论变换(NTT)
    在系数均为整数的时候,可以用NTT代替FFT,这样不会出现精度问题。#include<bits/stdc++.h>usingnamespacestd;typedeflonglonglld;constintN=20000005;constlldg=3,mod=998244353;lldr[N];lldpowe(llda,lldb){lldbase=1;while(b){......
  • 一个简单的 Python 实现希尔伯特-黄变换(Hilbert-Huang Transform,简称HHT)的例子
     importnumpyasnpfromscipy.signalimportargrelextremadefemd(data):"""经验模式分解(EmpiricalModeDecomposition,EMD)"""#找到极值点max_points,min_points=argrelextrema(data,np.greater,axis=0)max......
  • P251——用RadialGradientBrush填充椭圆,并进行RotateTransform变换
    一、认识RadialGradientBrush(径向渐变)    1.坐标      RadialGradientBrush可以用来填充矩形(正方形)和椭圆(正圆),      填充区域使用比例坐标,      椭圆的坐标(0,0)和(1,1)构成的矩形内切于椭圆2.设置径向渐变颜色GradientStop<Gradi......
  • 快速傅里叶变换计算多项式乘法
    前言OI中,多项式有着十分广泛的应用。其基础是多项式的基本运算,几乎所有多项式运算都是由多项式加法和乘法拼接成的。我们有显然的\(O(n)\)的办法计算多项式加法,而朴素的多项式乘法是很多情况下难以接受的\(O(n^2)\)的复杂度。快速傅里叶变换(FFT)可以高效(\(O(n\logn)\))计算多......
  • DC-DC升压变换器直流隔离升压模块电源5v12v24v48v转60v80v110v150v220v250v300v500v80
    特点 效率高达80%以上 1*2英寸标准封装 单电压输出 价格低 稳压输出 工作温度:-40℃~+85℃ 阻燃封装,满足UL94-V0要求 温度特性好 可直接焊在PCB上应用HRBW2~40W系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、及18~36V、36~72VDC标准(2......
  • 字体颜色变换与阴影效果实现字体变大幻觉
    定义元素<divclass="myText">342342</div>CSS按照如下设置,hover时将体验到字体动态凸出的视觉效果.myText{background-color:black;font-family:'PingFangSC','HelveticaNeue','Helvetica','Ari......
  • Matlab短时傅里叶变换和小波变换的时频分析
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Lnton羚通视频分析算法平台OpenCV-Python 教程 Hough直线变换
    OpenCVPythonHough直线变换霍夫直线变换(HoughTransform)是一种在图像中检测直线的技术。它可以帮助我们从图像中鲜明地检测出直线段,并且对于噪声和不完整的线段也有较好的鲁棒性。霍夫直线变换的基本思想是将直线表示为参数空间中的曲线,通过统计参数空间中的交点来检测直线。以下......