当前位置: 首页 > news >正文

Z 字形变换

题目

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

提示:

1 <= s.length <= 1000

s 由英文字母(小写和大写)、‘,’ 和 ‘.’ 组成

1 <= numRows <= 1000

参考答案

#include <bits/stdc++.h>using namespace std;class Solution {
public:string convert(string s, int numRows) {if (numRows <= 1) {return s;}string new_s;for (int row = 0; row < numRows; row++) {int delta;int interval1 = numRows + (numRows - 2) - row * 2;int interval2 = 2 * row;bool flag = false;for (int i = row; i < s.length(); i += delta) {new_s.push_back(s[i]);do {delta = !flag ? interval1 : interval2;flag = !flag;} while (delta == 0);}}return new_str;}
};
http://www.lryc.cn/news/461228.html

相关文章:

  • 在JasperReports中自动生成序列号
  • SpringBoot3 + MyBatisPlus 快速整合
  • 单片机(学习)2024.10.9
  • 操作符详解(C 语言)
  • 自动化测试数据:如何正确地选择不同格式文件「详细介绍」?
  • OceanBase中扩容OCP节点step by step
  • 国家人工智能创新应用先导区数据及城市人工智能先导区准自然实验数据(2006-2023年)
  • 搜维尔科技:感受、握持、推动、连接和挤压虚拟物体,SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能
  • C++中的引用详解
  • 软考中级 - 软件设计师学习笔记 - 1.3 计算机安全
  • Unity3D相关知识点总结
  • 牛顿迭代多维+原理推导
  • [自然语言处理]RNN
  • MySQL(B站CodeWithMosh)——2024.10.11(14)
  • Transformer的预训练模型
  • 手撕单例模式
  • UE4 材质学习笔记06(布料着色器/体积冰着色器)
  • 人工智能学习框架
  • GEE 教程:Landsat TOA数据计算地表温度(LST)
  • Web编程---配置Tomcat
  • 物联网5G模块WIFI模块调式记录(Pico)
  • 中国平安蝉联2024“金融业先锋30”第一名 获金融业ESG最高五星评级
  • [图解]题目解析:财务人员最有可能成为业务执行者的是
  • 零基础学大模型——大模型技术学习过程梳理
  • 匹配全国地址的正则表达式工具类
  • Notepad++ 使用技巧
  • 《语音识别芯片选型全攻略》
  • 【MySQL】VARCHAR和CHAR的区别?
  • SQL Server日期查询常用语句
  • java地理方位角度计算