leetcode如何解决Z字形变换问题
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,小编给大家分享一下leetcode如何解决Z字形变换问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!题目链接https://leetcode-cn.com/problems/zig
千家信息网最后更新 2025年01月23日leetcode如何解决Z字形变换问题
小编给大家分享一下leetcode如何解决Z字形变换问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
题目链接
https://leetcode-cn.com/problems/zigzag-conversion/
题目描述
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "LEETCODEISHIRING"
行数为 3 时,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"
。
请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"
示例 2:
输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"
解释:
L D R
E O E I I
E C I H N
T S G
解题方案
思路
标签:字符串
整体的思路是遍历字符串,遍历过程中将每行都看成新的字符串构成字符串数组,最后再将该数组拼接起来即可
如果numRows=1则说明当前字符串即为结果,直接返回
否则整个字符串需要经历,向下向右,向下向右,这样的反复循环过程,设定down变量表示是否向下,loc变量表示当前字符串数组的下标
如果down为true,则loc+=1,字符串数组下标向后移动,将当前字符加入当前字符串中
如果down为false,则表示向右,则loc-=1,字符串数组下标向前移动,将当前字符加入当前字符串中
时间复杂度:O(n),n为字符串s的长度
代码
Java版本
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 rows[loc] += s.substring(i,i+1);
if(loc == 0 || loc == numRows - 1)
down = !down;
loc += down ? 1 : -1;
}
String ans = "";
for(String row : rows) {
ans += row;
}
return ans;
}
}
JavaScript版本
/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
if(numRows == 1)
return s;
const len = Math.min(s.length, numRows);
const rows = [];
for(let i = 0; i< len; i++) rows[i] = "";
let loc = 0;
let down = false;
for(const c of s) {
rows[loc] += c;
if(loc == 0 || loc == numRows - 1)
down = !down;
loc += down ? 1 : -1;
}
let ans = "";
for(const row of rows) {
ans += row;
}
return ans;
};
画解
看完了这篇文章,相信你对"leetcode如何解决Z字形变换问题"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
字符
字符串
数组
字形
变换
下标
输入
输出
问题
变量
思路
版本
示例
篇文章
过程
题目
移动
复杂
中将
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
易助erp软件开发企业
qt多线程使用MySQL数据库
网络安全行业研究的意义
数据库与表背景
山东省网络技术大赛决赛wp
黑色沙漠无法连接到修补服务器
软件开发在线接单
软件开发学能上几年
网上购物商城数据库设计表
网络安全工程师晋升
杭州网络技术客服电话
按需要提取指定数据库
pg数据库对象命令大全
沐芃科技专业软件开发
崇明区数据网络技术咨询信息推荐
珠海纳深网络技术有限公司
跨表查询重复数据库
网络安全宣传周专栏
东莞卓盾互联网科技有限公司
什么专业和软件开发相近
阅文集团有多少服务器
软件开发与服务个股
街道应急指挥信息系统软件开发
网络技术优质专业建设
携程旅游数据库
金融软件开发是干啥的
网络安全服务商英文
化工网络安全国家规定
业内较好的重庆移动服务器租用
什么专业和软件开发相近