ZigZag Conversion
Posted 周先森爱吃素
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZigZag Conversion相关的知识,希望对你有一定的参考价值。
这个系列算是出于个人兴趣开的一个新坑吧,最近看到同学刷LeetCode算法题,就想写写那些可以一行Python代码写出来的题目,因此本专栏的文章的解题方式效率不做保证,只为追求“一行的浪漫”。
题目
题解
简单解释一下题目,给定一个字符串s
, 按照倒着写的"Z"字形重新排列字符串,排成numRows
行,排法如下图所示,逐行输出重排后的结果字符串。本题难度为Medium。
代码
这道题的题解思路在于,你不需要真的按照题意去排列新字符串然后逐行输出,其实每个原始字符串中的字符在输出字符串的位置是可以计算出来的,因此可以据此排序出结果。
class Solution:
def convert(self, s: str, numRows: int) -> str:
return ''.join([i[1] for i in sorted({((numRows - 1) - abs((numRows - 1) - i % (2 * (numRows - 1))), i): c for i, c in enumerate(s)}.items())]) if numRows > 1 else s
从下面的提交反馈来看,效率不是很高,大家也应当考虑高效的方法,部分题目的高效解法可以参考我的仓库源码。
以上是关于ZigZag Conversion的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode - 6 - ZigZag Conversion