0006-ZigZag Conversion(Z 字形变换)
生活随笔
收集整理的這篇文章主要介紹了
0006-ZigZag Conversion(Z 字形变换)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個系列算是出于個人興趣開的一個新坑吧,最近看到同學刷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從下面的提交反饋來看,效率不是很高,大家也應當考慮高效的方法,部分題目的高效解法可以參考我的倉庫源碼。
總結
以上是生活随笔為你收集整理的0006-ZigZag Conversion(Z 字形变换)的全部內容,希望文章能夠幫你解決所遇到的問題。