Python程式:將字串轉換為行數為k的Z字形字串
假設我們有一個字串s和另一個值k,我們需要透過從s中獲取每個字元並從左上到右下對角線開始,直到到達第k行,然後向上到右上,依此類推,來找到一個新的字串。
因此,如果輸入類似於s = "ilovepythonprogramming" k = 5,則輸出將為

為了解決這個問題,我們將遵循以下步驟
- line := 一個新的對映
- cnt := 0
- delta := 1
- 對於s中的每個索引i和字元c,執行以下操作
- 將(c, i)插入line[cnt]的末尾
- cnt := cnt + delta
- 如果cnt等於k,則
- delta := -1
- cnt := k - 2
- 如果cnt等於0,則
- delta := 1
- ans := 一個新的列表
- 對於line中的每個鍵i和值c,執行以下操作
- prefix := 一個大小與s相同的列表,並用單個空格填充
- 對於c中的每個對(x, y),執行以下操作
- prefix[y] := x
- 連線prefix中存在的每個元素並將其插入ans
- 返回一個新的字串,在ans中每個連續元素之間新增一個換行符
讓我們看下面的實現以更好地理解
示例
from collections import defaultdict
class Solution:
def solve(self, s, k):
line = defaultdict(list)
cnt = 0
delta = 1
for i, c in enumerate(s):
line[cnt].append((c, i))
cnt += delta
if cnt == k:
delta = -1
cnt = k - 2
if cnt == 0:
delta = 1
ans = []
for i, c in line.items():
prefix = [" "] * (len(s))
for x, y in c:
prefix[y] = x
ans.append("".join(prefix))
return "\n".join(ans)
ob = Solution()
s = "ilovepythonprogramming"
k = 5
print(ob.solve(s, k))輸入
"ilovepythonprogramming", 5
輸出

廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP