/**
* 6. Z 字形变换
* @author wsq
* @date 2020/09/24
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 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
链接:https://leetcode-cn.com/problems/zigzag-conversion
*/
package notsubmit;
import java.util.ArrayList;
import java.util.List;
public class ZigzagTransformation {
/**
* 通过寻找每一行元素之间的位置规律实现按行访问。
* 官方给的解法一,看完之后觉得自己很菜了,这里将解法一也写在下面
* @param s
* @param numRows
* @return
*/
public String convert(String s, int numRows) {
if(s.length() < numRows) {
return s;
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < numRows; i++) {
int pos = i;
while(pos < s.length()) {
sb.append(s.charAt(pos));
pos += 2 * numRows - 2;
if((i != 0 && i != numRows - 1) && (pos - 2 * i) < s.length()) {
sb.append(s.charAt(pos - 2 * i));
}
}
}
return sb.toString();
}
/**
* 官方的解法一,想法很独特,唯一不足就是空间的消耗
* 用四个列表存储对应排序后的元素
* @param s
* @param numRows
* @return
*/
public String convert2(String s, int numRows) {
if(numRows == 1) {
return s;
}
List<StringBuilder> rows = new ArrayList();
for(int i = 0; i < Math.min(s.length(), numRows); i++) {
rows.add(new StringBuilder());
}
boolean goDown = false;
int curRow = 0;
for(char c: s.toCharArray()) {
rows.get(curRow).append(c);
if(curRow == 0 || curRow == numRows - 1) {
goDown = !goDown;
}
curRow += goDown ? 1 : -1;
}
StringBuilder ans = new StringBuilder();
for(StringBuilder sb: rows) {
ans.append(sb);
}
return ans.toString();
}
public static void main(String[] args) {
String s = "LEETCODEISHIRING";
int numRows = 3;
ZigzagTransformation zt = new ZigzagTransformation();
String ans = zt.convert2(s, numRows);
System.out.println(ans);
}
}
相关推荐
别再只用CANape测数据了!手把手教你用ASAP2 Studio编辑A2L文件(附MAP文件更新避坑指南)
本文深入探讨ASAP2 Studio在ECU开发中的高阶应用,特别是如何利用其编辑A2L文件并同步更新MAP文件,提升测量标定效率。文章详细解析了ASAP2 Studio的双向同步能力、MAP文件更新全流程及变量管理技巧,帮助工程师避免常见错误,优化工作流程。
Z字形变换
一 问题描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行Z 字形排列。 比如输入字符串为 "PAYPALISHIRING"行数为 3 时,排列如下: P A H N A P L S I I G Y I R 二 算法简析 1.变换规则是Z字形变换,是由下至上,然后右下至上,一下一上为一个周期,循环迭代,如下所示: 2.设计二维表std::vector<std::vector<char> >z_array存储变换后的字符串,z_...
FLUENT UDF编译及蒸发冷凝相关问题
蒸发冷凝与相间传质
Z字形变换 详解
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。 请你实现这个将字符串进行指定行数变换的函数: s...
python 常见算法(1-50题)
常见的算法题
vcs覆盖率相关
选择要查看的覆盖率点,右键选择 show xxx tests;
【LeetCode】6. Z 字形变换
【LeetCode】6. Z 字形变换
蒙特卡洛+概率潮流!基于蒙特卡洛和新能源出力模拟的概率潮流分布程序代码!
最后,导出光照强度、风速、网损和节点电压的概率分布图,并计算了各节点电压和网损的平均值和方差,展示了接入前后的节点电压对比图。在不确定性增加的电力系统中,概率潮流成为含随机因素规划问题的求解前提,可以更加真实地反映电力系统的全面信息。此外,概率潮流还可用于研究风电和光伏发电出力以及电动汽车消耗功率和向电力系统反向供电功率的不确定性对电力系统的影响,发现系统运行中的潜在风险,为系统运行控制提供参考。概率潮流的目的是揭示电网中随机变量对系统的影响,发现电网中的薄弱环节,为规划和调度部门的决策提供有价值的信息。
Z 字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN...
基于STM32设计的水下水质检测装置(微信小程序)(205)
本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。
matlab 计算点云粗糙度
A Correspondence Framework for ALS Strip Adjustments based on Variants of the ICP Algorithm
LeetCode-6 Z字形变换
题目:6. Z字形变换 难度:中等 分类:字符串 解决方案:字符串遍历 今天我们学习第6题Z字形变换,这是一个字符串的中等题,像这样字符串的题目经常作为面试题来考察面试者算法能力和写代码能力,因此最好能手写出该题。下面我们看看这道题的题目描述。 题目描述 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为"LEETCODEISHIRING"行数为3时,...
华为OD机试真题2025双机位B卷 Java&Go 实现【朋友圈个数】
给定一组朋友关系,统计一下该朋友关系网中的朋友圈个数。 朋友圈的定义:一个朋友圈至少由3个朋友组成,且要求同一个朋友圈中的任意两个人都具有直接的朋友关系。 输入描述 输入一个朋友关系列表,如 Fiends =A.B],[A.C],IB,DI,其中的每一个元素 Friendsi表示 Friends[i][0)和 Friends [i][1] 是朋友关系 先输入一个数字 N 代表关系的总数,后面每条关系一行,两个成员以逗号分隔
leetcode 6 Z 字形变换 c++
6最长回文子串 补一个题目位置。https://leetcode-cn.com/problems/zigzag-conversion/ 这题是输出控制,实现了就行。 我的想法:这些字母的排列是按2∗(numRows−1)2*(numRows-1)2∗(numRows−1)的方式呈周期性的,所以对2∗(numRows−1)2*(numRows-1)2∗(numRows−1)取余就可以了。要注意num...
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
【LeetCode #6 题解】 Z 字形变换
@toc 一、题目 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 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
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
Leetcode 6. Z 字形变换
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。输入:s = “PAYPALISHIRING”, numRows = 3。输入:s = “PAYPALISHIRING”, numRows = 4。输入:s = “A”, numRows = 1。输出:“PAHNAPLSIIGYIR”输出:“PINALSIGYAHRPI”,想法差不多但是比我的这个简洁。
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
力扣第6题:Z 字形变换
问题描述: 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字符串进行指定行数变换...
Leetcode 6 Z字形变换
Leetcode 6 Z字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。 请你实现这个将字...
【力扣-6】Z字形变换 python解题思路
【力扣-6】Z字形变换 python解题思路。
LeetCode 6 Z 字形变换
LeetCode 6 Z 字形变换 题目 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCI...
LeetCode6_Z字形变换
重在思路
LeetCode6 Z字形变换 ZigZag Conversion
LeetCode6 Z字形变换 ZigZag Conversion 题目描述 题目地址:https://leetcode-cn.com/problems/zigzag-conversion/ 题目难度:中等 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串 示例 示例1: 输入: s = "LEETCODEISHI...
6. Z字形变换
• 对于 numRows 行的Z字形排列,第一行和最后一行的字符间隔是 2 * (numRows - 1),而中间行的字符间隔是有两个不同的值交替出现,分别是 2 * (numRows - 当前行号) 和 2 * 当前行号。• 对于字符串中的第 i 个字符,它在Z字形排列中的行号 row 和列号 col 是有规律的,可以通过数学公式计算出来,然后根据行号和列号计算出它在最终结果字符串中的位置。• 通过观察Z字形排列的规律,我们可以发现每个字符所在的行是有规律的。需要遍历字符串 s 一次来构建结果字符串。
508



被折叠的 条评论
为什么被折叠?



