Leetcode——6. Z 字形變換
將一個給定字串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。
比如輸入字串為 “LEETCODEISHIRING” 行數為 3 時,排列如下:
L C I R
E T O E S I I G
E D H N
之後,你的輸出需要從左往右逐行讀取,產生出一個新的字串,比如:“LCIRETOESIIGEDHN”。
請你實現這個將字串進行指定行數變換的函式:
string convert(string s, int numRows);
示例 1:
輸入: s = “LEETCODEISHIRING”, numRows = 3
輸出: “LCIRETOESIIGEDHN”
示例 2:
輸入: s = “LEETCODEISHIRING”, numRows = 4
輸出: “LDREOEIIECIHNTSG”
解釋:
L D R
E O E I I
E C I H N
T S G
思路:
idx從0開始,自增直到numRows-1,此後又一直自減到0,重複執行。
給個例子容易懂一些:s = “abcdefghijklmn”, numRows = 4
a g m
b f h l n
c e i k
d j
從第一行開始往下,走到第四行又往上走,這裡用 step = 1 代表往下走, step = -1 代表往上走
因為只會有一次遍歷,同時把每一行的元素都存下來,所以時間複雜度和空間複雜度都是 O(N)
def convert(s,numRows):
if numRows == 1 or numRows > len(s):
return s
res = [''] * numRows
idx,step = 0,1
for c in s:
res[''] += c
if idx == 0: #第一行,一直向下走
step = 1
elif idx==numRows - 1: #到了最後一行,向上走
step = -1
idx += step
return ''.join(res)
相關文章
- LeetCode 6.Z字形變換LeetCode
- LeetCode-6. Z字形變換(找規律)LeetCode
- 演算法-Z字形變換演算法
- LeetCode6: ZigZag Conversion(Z字形變換)LeetCode
- leetcode 解題 6. Z 字形變換-python3@ 官方二維陣列、list 設 flag 按行訪問法LeetCodePython陣列
- 2024.09.22 力扣刷題 Z字形變換力扣
- 每天一道演算法題:Z字形轉換演算法
- 6.變數變數
- Leetcode 山字形序列_正反掃描LeetCode
- LeetCode 6. ZigZag ConversionLeetCode
- JavaScript時間日期轉換成漢字形式JavaScript
- z變換與s變換之間的轉換(一些零碎且不嚴謹的想法)
- OpenGL模型檢視變換、投影變換、視口變換模型
- 給定一個字串,按Z字形列印,在從左向右,從上往下列印字串字串
- Hough變換
- 傅立葉變換
- 仿射變換及其變換矩陣的理解矩陣
- 小波變換與傅立葉變換的區別
- 【DWT筆記】傅立葉變換與小波變換筆記
- OpenGL中的座標變換、矩陣變換矩陣
- 離散傅立葉變換(DFT)和快速傅立葉變換(FFT)FFT
- 6. 抹平差異,統一型別轉換服務ConversionService型別
- windows10系統下將檔案日期格式變回純數字形式的方法Windows
- OpenCV計算機視覺學習(3)——影像灰度線性變換與非線性變換(對數變換,伽馬變換)OpenCV計算機視覺
- RxSwift -- 變換Swift
- 快速傅立葉變換
- 【OpenCV】影像變換(四-2)霍夫變換圓檢測OpenCV
- Bootstrap系列 -- 6. 列表boot
- 6. 盒子模型模型
- 6.類和物件物件
- 灰度變換函式:對數及對比度拉伸變換函式
- 【OpenCV-Python】:影像的傅立葉變換與逆傅立葉變換OpenCVPython
- 【OpenCV】影像變換(四-1)-霍夫變換線段檢測OpenCV
- 最終字形查詢器Entity Pro——MacwMac
- SVG animateTransform變換動畫SVGORM動畫
- 【八】查詢變換
- pose座標變換
- 離散傅立葉變換