ZigZag Conversion——LeetCode进阶路⑥
原题链接https://leetcode.com/problems/zigzag-conversion/
没开始看题目时,小陌发现这道题似乎备受嫌弃,被n多人踩了,还有点小同情
- 题目描述
The string
"PAYPALISHIRING"is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H N
A P L S I I G
Y I R
And then read line by line:
"PAHNAPLSIIGYIR"Write the code that will take a string and make this conversion given a number of rows:
string convert(string s, int numRows);Example 1:
Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"
Example 2:
Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation: P I N
A L S I G
Y A H R
P I - 思路分析:
题目需求是把输入字符排成锯齿牙子,再按行进行输出
至于锯齿牙子啥样,没脑补出来的猿兄们看eg:
Input: s = "123456789", numRows = 2
1 3 5 7 9
2 4 6 8
Output: "135792468"
Input: s = "123456789", numRows = 3
1 5 9
2 4 6 8
3 7
Output: "159246837"
Input: s = "123456789", numRows = 4
1 7
2 6 8
3 5 9
4

Output: "172683594"
恭喜猿兄,你已经把这道题中“最难”的部分搞定了,如你所见,除了题意相对难理解之外,剩下的简直就是数学的找规律问题
尔后猿兄也发现阿六为啥被踩了叭~
规律分析:(方便起见,n=numRows)
首尾两行元素之间的间隔interval1 = 2n-2
两者之间的行中元素的间隔interval = 前一元素的列数 + interval1 - 2 * 当前行数
- 源码附录
class Solution {
public String convert(String s, int numRows) {
if(s == null||numRows<=0){
return "";
}
if(s.length()<2||numRows<2){
return s;
} int interval = 2*numRows - 2;
int interval1;
StringBuilder sb = new StringBuilder();
for(int i=0;i<numRows;i++){
for(int j=i;j<s.length();j=j+interval){
sb.append(s.charAt(j));
if(i != 0&&i != numRows-1){
interval1 = j + interval - 2*i;
if(interval1 < s.length()){
sb.append(s.charAt(interval1));
}
}
}
}
return sb.toString();
}
}
ZigZag Conversion——LeetCode进阶路⑥的更多相关文章
- 6. ZigZag Conversion - LeetCode
Question 6. ZigZag Conversion Solution 题目大意:将字符串按Z字型排列,然后再一行一行按字符输出 思路:按题目中的第一个例子,画出如下图,通过n的不同值,可以找出 ...
- ZigZag Conversion leetcode java
题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...
- ZigZag Conversion [LeetCode]
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- 6.[leetcode] ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- LeetCode解题报告—— 2 Keys Keyboard & Longest Palindromic Substring & ZigZag Conversion
1. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You ...
- LeetCode ZigZag Conversion(将字符串排成z字型)
class Solution { public: string convert(string s, int nRows) { string a=""; int len=s.leng ...
- 【leetcode❤python】 6. ZigZag Conversion
#-*- coding: UTF-8 -*- #ZigZag Conversion :之字型class Solution(object): def convert(self, s, numRow ...
- leetcode第六题 ZigZag Conversion (java)
ZigZag Conversion The string "PAYPALISHIRING" is written in a zigzag pattern on a given nu ...
- leetcode题解 6.ZigZag Conversion
6.ZigZag Conversion 题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a gi ...
- LeetCode 6. ZigZag Conversion & 字符串
ZigZag Conversion 看了三遍题目才懂,都有点怀疑自己是不是够聪明... 就是排成这个样子啦,然后从左往右逐行读取返回. 这题看起来很简单,做起来,应该也很简单. 通过位置计算行数: P ...
随机推荐
- Flume - [05] Hbase sink
一.概述 此接收器将数据写入Hbase.Hbase配置是从类路径中遇到的第一个Hbase-site.xml获取的.由配置指定的实现 HbaseEventSerializer 的类用于将事件转换为 ...
- Linux - 配置IP&主机名的快捷操作
nmtui 执行以下命令可以进入一个可视化界面,进行IP的可视化配置.以及网络服务的重启(注意,这个重启是停止然后启动, 如果使用xshell进行操作会失去ssh连接,直连服务器时可这直接操作).主机 ...
- 错误修正记录: [Vivado 12-8300] Launch HLS failed! Please see vitis_hls.log for details.
起因 使用了Vivado Video Frame Buffer Read和Vivado Video Frame Buffer Write,按out of context模式综合失败.vivado版本2 ...
- QWidget的isHidden和isVisible
文章目录 QWidget的isHidden和isVisible 问题的出现 QWidget的show()函数 QWidget的isVisible和isHidden 源码追溯 QWidget的isHid ...
- rust学习笔记(4)
流程控制 if if n < 0 { print!("{} is negative", n); } else if n > 0 { print!("{} is ...
- PHP的回调函数
所谓的回调函数,就是指调用函数时并不是向函数中传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中,这个作为参数的函数就是回调函数.通俗的来说,回调函数也是一个我们定义的函数,但是不 ...
- 四大AI编程工具组合测评
在当今数字化浪潮中,AI 编程工具如雨后春笋般涌现,极大地提升了编程效率与体验.本文将详细剖析四类 AI 编程工具组合,从开发工具.大模型.插件搭配,到编程能力.费用体系及综合评价,为开发者提供全面 ...
- Django实战项目-学习任务系统-用户登录
第一步:先创建一个Django应用程序框架代码 1,先创建一个Django项目 django-admin startproject mysite 将创建一个目录,其布局如下: mysite/ mana ...
- windows 稀疏文件 (sparse file) 的一个实用场景——解决 SetEndOfFile 占据磁盘空间引入的性能问题
前言 之前写过一篇文章说明文件空洞:<[apue] 文件中的空洞>,其中提到了 windows 稀疏文件是制造空洞的一种方式,但似乎没什么用处,如果仅仅处理占用磁盘空间的场景,使用SetE ...
- FireDAC的数据库的FDConnect
通常,我们设置一个ini文件,按照FDConnection的ini格式要求配置好.然后直接调用通知连接数据库是否OK. FireDAC可以通过FDManager管理ini文件简单实现.即由FDConn ...