返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中的Z字形变换问题
  • 377
分享到

C++中的Z字形变换问题

2024-04-02 19:04:59 377人浏览 薄情痞子
摘要

目录Z字形变换描述Z字形变换 描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALIS

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"

思路/解法

模拟法,根据所给条件,线性处理即可(Z字形存在一定规律,每当固定的条件后前进方向进行转变)。

class Solution {
public:
    string convert(string s, int numRows) {
        int rows = numRows;
	    int columns = ((s.length() / (2 * rows - 1)) + 1) * rows;//尽可能缩小所使用的空间,这里columns可优化,并未精确求解
	    std::vector<std::vector<char>> arrs(rows, std::vector<char>(columns));

	    //初始化
	    for (int i = 0; i < rows; i++)
		    for (int j = 0; j < columns; j++)
			    arrs[i][j] = '0';

	    int x = 0, y = 0;
	    int index = 0;
	    while (index < s.length())
	    {
		    if (index < s.length() && x < rows)
			    arrs[x++][y] = s[index++];

		    if (index < s.length() && x == rows)
		    {
                 //更新x和y
			    y++;
			    x -= 2;
			    while (index < s.length() && x > 0)
				    arrs[x--][y++] = s[index++];
			    x = 0;//重置x
		    }
	    }

	    std::string res;
	    for (int i = 0; i < rows; i++)
	    {
		    for (int j = 0; j < columns; j++)
		    {
			    if (arrs[i][j] != '0' && arrs[i][j] != '\0')
				    res.push_back(arrs[i][j]);
		    }
	    }
	    return res;
    }
};

到此这篇关于c++中的Z字形变换的文章就介绍到这了,更多相关C++ Z字形变换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++中的Z字形变换问题

本文链接: https://lsjlt.com/news/153948.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++中的Z字形变换问题
    目录Z字形变换描述Z字形变换 描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALIS...
    99+
    2024-04-02
  • C++中的Z字形变换问题怎么解决
    这篇“C++中的Z字形变换问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中的Z字形变换问题怎么解决”文章吧...
    99+
    2023-07-02
  • C语言详解Z字形变换排列的实现
    目录方法一方法二题目链接:Z 字形变换 方法一 ——找规律模拟数组 题目要求构造一个从左到右的Z型矩阵。 通过分析,可以看出这个Z型矩阵的特点 Z型矩阵就...
    99+
    2024-04-02
  • C语言怎么实现Z字形变换排列
    本篇内容介绍了“C语言怎么实现Z字形变换排列”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题目链接:Z 字形变换方法一&mdash;...
    99+
    2023-06-30
  • Vue中的文字换行问题
    目录Vue中数据单向绑定的文字换行怎么搞?Vue文本中的\n 、<br>进行换行显示1.br换行可以使用v-html2.\n 换行3.把br替换成\n换行Vue中数据单向绑定的文字换...
    99+
    2024-04-02
  • C语言中求解图形的问题
    目录C语言求解图形问题什么是图形问题?怎么求解图形问题?C语言常用图形函数屏幕颜色的设置和清屏函数基本图形函数设置线型和线宽填充图形函数图形存取处理函数  C语言求解图形问...
    99+
    2022-11-16
    C语言求解图形 C语言图形 C求解图形问题
  • C#中怎么实现鼠标形状变换效果
    C#中怎么实现鼠标形状变换效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。【C#鼠标形状变换效果的问题】:在一个form上存在一个图片,当用户点击图片的时候,图片会放大,...
    99+
    2023-06-17
  • C++中的整形字节数
    目录整形short、int、long、long long规定如下以64位win7系统为例32位程序整形数据类型表示的范围64位程序整形数据类型表示的范围头文件climits定义了符号...
    99+
    2024-04-02
  • C++变量初始化形式及其默认初始值问题
    目录什么是初始化初始化方式默认初始化值初始化直接初始化/拷贝初始化列表初始化默认初始值总结什么是初始化 当对象在创建时获得了一个特定的值,我们就说这个对象被初始化了。 注意:在C++...
    99+
    2023-02-10
    C++变量初始化 C++默认初始值 C++初始化
  • PHP字符串中引用变量问题
    php中字符串引用变量主要是数据库操作字符串的不同1,普通字符串引用变量    a.外层必须引用双引号    b.字符串中的变...
    99+
    2024-04-02
  • 探讨如何在Vue中避免图片变形问题
    Vue是一种流行的JavaScript框架,它在开发现代Web应用程序方面非常有用。在Vue中添加图像是一个常见需求,但很多时候我们会遇到这样的问题:当图片尺寸与容器尺寸不同时,图片会变形。这篇文章将探讨如何在Vue中避免图片变形。为什么会...
    99+
    2023-05-14
  • mysql中的replace函数替换字符串问题
    目录mysql中replace函数替换字符串介绍下mysql的REPLACE()函数①select 可以直接用(声明curl ,显示需求等)②UPDATE语句中使用REPLACE函数的语法如下③嵌套使用的情况总...
    99+
    2022-12-21
    mysqlreplace函数 replace函数替换字符串 mysql字符串
  • CSS如何解决前端图片变形的问题
    这篇文章将为大家详细讲解有关CSS如何解决前端图片变形的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、让图片的宽度或者高度等于容器的宽度或高度,多余的裁掉,然后让图片居中:<style&nb...
    99+
    2023-06-08
  • C++中字符串处理问题的详解
    C++中字符串处理问题的详解在C++编程中,字符串处理是一个非常常见的任务。无论是读取用户输入、从文件中读取数据、或者进行数据处理和格式转换,字符串处理都扮演了重要的角色。本文将介绍C++中常见的字符串处理问题,并提供具体的代码示例。字符串...
    99+
    2023-10-22
    C++ 字符串处理 问题详解
  • 完美解决docx4j变量替换的问题
    目录docx4j变量替换的问题测试代码docx4j版本下面是工具类docx4j变量替换的问题 最近工作上需要自己完成word文档变量替换的问题 把里面的变量给替换成数据库里的值,但...
    99+
    2024-04-02
  • c++中的字节序与符号位的问题
    目录c++的字节序与符号位c++多字节值与字节序多字节值与字节序对于跨平台应用,字节序的两种处理方式字节序的判断整数字节序的转换浮点数的字节序转换c++的字节序与符号位 看这样一道题...
    99+
    2024-04-02
  • c++中字符变量的定义
    在 c++ 中,字符变量使用 char 关键字定义,只能存储单个字符,使用单引号赋值,可使用转义序列表示特殊字符。 C++ 中字符变量的定义 字符变量是用来存储单个字符的变量类型。在 ...
    99+
    2024-05-08
    c++
  • 基于String不可变字符与StringBuilder可变字符的效率问题
    String与StringBuilder的效率 ‍1.如果需知要拼接的内容比较道少 不可变,拼接的多会产生多个新的对象,十分的耗费内存空间和程序执行效率 String...
    99+
    2024-04-02
  • C#中的变量初始化形式是什么
    本篇内容主要讲解“C#中的变量初始化形式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中的变量初始化形式是什么”吧!C# 中的变量初始化变量通过在等号后跟一个常量表达式进行初始化(赋值...
    99+
    2023-06-17
  • C++中常见的字符串连接问题详解
    C++中常见的字符串连接问题详解在C++编程中,字符串的连接是一项常见的操作。字符串连接指的是将两个或多个字符串拼接在一起形成一个新的字符串。本文将详细介绍C++中常见的字符串连接问题,并提供具体的代码示例。下面将从以下几个方面进行讨论。1...
    99+
    2023-10-22
    字符串拼接 字符串连接 C++字符串
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作