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 ...
随机推荐
- 大数据之路Week08_day02 (Flume 三个组件Source, channel, sink)
在使用之前,先介绍组件Flume的特点和一些组件 Flume的优势: 1. Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase 2. 当收集数据的速度超过将写入数据的时候, ...
- 07_读写文件open(filename, mode, encoding=None)
读写文件open(filename, mode, encoding=None) mode mode 权限 r 只读 w 只写(会从头开始覆盖覆盖写当前文件内容) a 追加写(从文件内容的末尾追加写内容 ...
- 关于jsp的MySQL数据库连接问题
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- manim边学边做--局部缩放的场景类
在动画制作中,尤其是数学和科学可视化领域,有时我们需要将观众的注意力集中在场景的某个特定部分. Manim提供了一个强大的工具 ZoomedScene,它允许我们在场景中创建一个独立的缩放视图,从而实 ...
- [I.2]个人作业:软件案例分析
项目 内容 这个作业属于哪个课程 2025春季软件工程(罗杰.任健) 这个作业的要求在哪里 [I.2]个人作业:软件案例分析 我在这个课程的目标是 在PSP中精进个人代码技术,在TSP中提高团队合作凝 ...
- MongoDB入门介绍与案例分析
一.MongoDB 数据库定位 首先我们来看一下 MongoDB 是什么样的数据库.数据库分两大类: OLTP(Online Transaction Processing)联机事务处理. OLAP(O ...
- Linux下使用sz/rz命令从服务器下载或上传文件
简介 Linux中rz命令和sz命令都可用于文件传输,而rz命令主要用于文件的上传,sz命令用于从Linux服务器下载文件到本地. 安装 yum安装 yum -y install lrzsz 源码安装 ...
- 因为Apifox不支持离线,我果断选择了Apipost!
要说国内最有名的两款API开发工具不是Apipost就是Apifox,因为曾经遭遇到一件事,导致我坚定的选择了Apipost. 有一年春节我攒了足够的年假,提前开开心心的过年回家,路上我的领导给我打电 ...
- VRRP+BFD实验
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)的工作原理主要涉及多个路由器(或具备路由功能的设备)协同工作,通过VRRP报文和优先级机制来选举出一 ...
- Docker之一简介
什么是Docker Docker是Google使用go语言进行开发的,对进程进行封装隔离,始于操作系统层面的虚拟化技术. 因为隔离的进程独立于宿主机和其它的隔离进程,因此成为容器 Docker在容器的 ...