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"。
第一次:找下标规律按行输出
执行用时:84 ms; 内存消耗:11.8MB 效果:还行
class Solution(object):
def convert(self, s, numRows):
"""
:type s: str
:type numRows: int
:rtype: str
"""
res=""
List=[]
#一组是2*numRows-2个
#len(s)<numRows
s_number,Aqueue=len(s),2*numRows-2
if len(s)==0 or Aqueue==0:
return s
queue_number=s_number/Aqueue
Yushu=s_number-queue_number*Aqueue
for i in range(1,numRows+1):
List.append("")
for j in range(0,queue_number):
if i==1 or i==numRows:
List[i-1]+=s[i+Aqueue*j-1]
else:
List[i-1]+=s[i+Aqueue*j-1]
List[i-1]+=s[i+Aqueue*j-1+(numRows-i)*2]
if Yushu>=i:
List[i-1]+=s[i-1+s_number-Yushu]
if (i+(numRows-i)*2)<=Yushu and i!=numRows:
List[i-1]+=s[i-1+s_number-Yushu+(numRows-i)*2]
res+=List[i-1]
return res
学习
- 找规律,利用字符串列表存储每一行的输出字符
第二种方法:真·Z字字符串按行输出
执行用时:80 ms; 内存消耗:13.2MB 效果:非常好
class Solution:
def convert(self, s: str, numRows: int) -> str:
L = ['' for x in range(numRows)]
n = 0
flag = True
for i in s:
if n > numRows - 2:
flag = False
elif n <= 0:
flag = True
L[n] += i
if flag:
n += 1
else:
n -= 1
return ''.join(L)
学习
按Z字走,n作为组数以及游标,flag作为标记表示目前是正走还是反走
思路比我要好
['' for x in range(numRows)] ''.join(L)
Leetcode(6)Z字形变换的更多相关文章
- C#版[击败100.00%的提交] - Leetcode 6. Z字形变换 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- Java实现 LeetCode 6 Z字形变换
6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L ...
- [LeetCode] 6. Z 字形变换
题目链接:(https://leetcode-cn.com/problems/zigzag-conversion/) 题目描述: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列 ...
- LeetCode 6. Z字形变换(ZigZag Conversion)
题目描述 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数: P A H N A P L S I I G Y I R 之后从左往右,逐行读取字符:"P ...
- Leetcode题库——6.Z字形变换
@author: ZZQ @software: PyCharm @file: convert.py @time: 2018/9/20 20:12 要求: Z字形变换 将字符串 "PAYPAL ...
- LeetCode Golang 6. Z 字形变换
6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L ...
- Z 字形变换 C++实现 java实现 leetcode系列(六)
Z 字形变换 java实现 C++实现 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 ...
- 【LeetCode】ZigZag Conversion(Z 字形变换)
这道题是LeetCode里的第6道题. 题目要求: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ...
- leetcode刷题六<z字形变换>
将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐 ...
随机推荐
- Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fa980000, 59244544, 0) failed; error='Cannot allocate memory' (errno=12)
启动项目报错 Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fa980000, 592445 ...
- thymeleaf自定义标签方言处理
项目背景:springboot+thymeleaf thymeleaf两种方式处理自定义标签:AbstractAttributeTagProcessor 和 AbstractElementTagPro ...
- logback.xml配置文件解析一
配置文件主要结构如下: <?xml version="1.0" encoding="utf-8"?> <configuration> & ...
- 第六届蓝桥杯java b组第五题
九数组分数 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. public class A { public static vo ...
- 判断java中最多的词组
其中的难点,是空格,以及如果第一个是空格怎么办,虽然事后看着很简单,但是做的时候却十分的困难! static void Daunyu()throws IOException { Word wo ...
- Spring Security 梳理 - DelegatingFilterProxy
可能你会觉得奇怪,我们在web应用中使用Spring Security时只在web.xml文件中定义了如下这样一个Filter,为什么你会说是一系列的Filter呢? <filter> ...
- 【IT技术概念】什么是webservice?
WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互. WebServi ...
- 2017CCSP-01 五子棋 简单模拟
题面和数据 对于每个空格,先定义一个变量cnt=0,表示空格填充后对五子数量的变化,四个方向进行两边搜索,设对于每个方向连续的白棋子分别为\(wa\),\(wb\),有以下几种情况. \(wa> ...
- 经典案例复盘——运维专家讲述如何实现K8S落地(摘抄)
以下是运满满K8s容器化进程记录,摘抄一下,方便以后查阅. 背景介绍 运满满自开始微服务改造以来,线上线下已有数千个微服务的 Java 实例在运行中.这些 Java 实例部署在数百台云服务器或虚机上, ...
- ES 32 - Elasticsearch 数据建模的探索与实践
目录 1 什么是数据建模? 2 如何对 ES 中的数据进行建模 2.1 字段类型的建模方案 2.2 检索.聚合及排序的建模方案 2.3 额外存储的建模方案 3 ES 数据建模实例演示 3.1 动态创建 ...