LeetCode 面试经典150题 Z字形变换

embedded/2024/10/18 0:03:19/

题目

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

思路

代码

class Solution {public String convert(String s, int numRows) {if (numRows == 1) return s;int len = Math.min(s.length(), numRows);String[] rows = new String[len];for (int i = 0; i < len; i++)rows[i] = "";int loc = 0;boolean down = false;for (int i = 0; i < s.length(); i++) {rows[loc] += s.substring(i, i + 1);if (loc == 0 || loc == numRows - 1) // 因为是Z字形,所以从上往下再从下往上down = !down;loc += down ? 1 : -1;}String ans = "";for (String row : rows) {ans += row;}return ans;}
}

性能

时间复杂度o(n)

空间复杂度o(n)


http://www.ppmy.cn/embedded/127953.html

相关文章

【艾思科蓝】C++游戏开发探秘:打造高性能游戏世界的钥匙

【IEEE出版 | 院士、Fellow报告】第八届电气、机械与计算机工程国际学术会议&#xff08;ICEMCE 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a;学术会议-学术交流征稿-学术会议在线-艾思科蓝 引言 在当今的游戏开发领域&#xff0c;C以其高效、…

汽车管理系统——主界面制作

目录 主界面需要有什么&#xff1f;然后要做什么&#xff1f;添加两个主菜单&#xff08;声明&#xff09;下一步应该干什么&#xff1f;能够跳转到文件有哪几个动作&#xff1f;动作如何声明&#xff1f;为什么用选择声明指针&#xff0c;不选择直接声明这个对象&#xff1f; …

BI 的前置计算

某机构上了一套分布式数据仓库&#xff0c;历史数据逐步装进了仓库&#xff0c;然后&#xff0c;基于数据仓库构建了 BI 系统&#xff08;主要是多维分析&#xff09;。刚开始&#xff0c;一切都顺利&#xff0c;但随着时间推移&#xff0c;基于中央数据仓库的应用越来越多&…

软件包与服务搭建

一.软件包管理 Linux的软件包管理是通过工具进行管理的 命令RPM/YUM -----RPM软件包 语法&#xff1a;rpm -q [子选项] [软件名] -qa : 显示当前系统中以RPM方式安装的所有软件列表 -qi : 查看指定软件包的名称、版本、许可协议、用途描述等详细信息 -ql : 显示指定的软…

windows下安装、配置neo4j并服务化启动

第一步&#xff1a;下载Neo4j压缩包 官网下载地址&#xff1a;https://neo4j.com/download-center/ &#xff08;官网下载真的非常慢&#xff0c;而且会自己中断&#xff0c;建议从以下链接下载&#xff09; 百度网盘下载地址&#xff1a;链接&#xff1a;https://pan.baid…

Apache Linkis + OceanBase:如何提升数据分析效率

计算中间件 Apache Linkis 构建了一个计算中间件层&#xff0c;以实现上层应用程序和底层数据引擎之间的连接、治理和编排。目前&#xff0c;已经支持通过数据源的功能&#xff0c;实现用户通过Linkis 对接并使用 OceanBase数据库。 本文详细阐述了在 Apache Linkis v1.3.2中&a…

linux下redis 扩内存相关命令

大家好&#xff0c;我是 V 哥&#xff0c;在Linux下&#xff0c;Redis 的扩展内存需要通过调整系统的虚拟内存配置和Redis自身的内存使用限制来实现。Redis 的内存管理主要依赖于系统的内存&#xff0c;因此增加Redis可用内存的操作包括以下几个步骤&#xff1a; 一、调整Redi…

脚本里运行python程序 通过$()获取程序输出内容失败

#错误的情况 output $(python train.py --dataset gossipcop --seed 1 --batch_size 8 --testgraph "$graph_name" --count 2) echo $outputtrain.py里有print(“xxx”)&#xff0c;但是output没有接收到&#xff1f;&#xff01;&#xff01;&#xff01; 原因&…