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
- LeetCode6: ZigZag Conversion(Z字形變換)LeetCode
- LeetCode-6. Z字形變換(找規律)LeetCode
- 演算法-Z字形變換演算法
- 2024.09.22 力扣刷題 Z字形變換力扣
- leetcode 解題 6. Z 字形變換-python3@ 官方二維陣列、list 設 flag 按行訪問法LeetCodePython陣列
- z 變換
- Z變換(2020.10.21)
- 每天一道演算法題:Z字形轉換演算法
- Leetcode 山字形序列_正反掃描LeetCode
- LeetCode 6. ZigZag ConversionLeetCode
- 6.變數變數
- CCF第二題之Z字形掃描(只有90分555555)
- z變換與s變換之間的轉換(一些零碎且不嚴謹的想法)
- 給定一個字串,按Z字形列印,在從左向右,從上往下列印字串字串
- 實驗6.交換機MAC地址表簡單實驗Mac
- Hough變換
- Leetcode 322 零錢兌換LeetCode
- 仿射變換及其變換矩陣的理解矩陣
- 6. 抹平差異,統一型別轉換服務ConversionService型別
- OpenCV計算機視覺學習(3)——影像灰度線性變換與非線性變換(對數變換,伽馬變換)OpenCV計算機視覺
- 頻域變換
- windows10系統下將檔案日期格式變回純數字形式的方法Windows
- leetcode322 零錢兌換LeetCode
- 【LeetCode】322. 零錢兌換LeetCode
- [LeetCode解題] -- 零錢兌換LeetCode
- 小波變換與傅立葉變換的區別
- 6.【輸入流】
- 灰度變換函式:對數及對比度拉伸變換函式
- 2D變換
- 貝葉斯變換
- NOIP 2002 字串變換字串
- pose座標變換
- 傅立葉變換
- 各種Fourier變換
- 複變函式與積分變換函式
- 最終字形查詢器Entity Pro——MacwMac
- 6. 盒子模型模型