文巾解题 6. Z 字形变换
生活随笔
收集整理的這篇文章主要介紹了
文巾解题 6. Z 字形变换
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 題目描述
2 解題思路
2.1 構(gòu)造Z型數(shù)組
class Solution:def convert(self, s: str, numRows: int) -> str:if(numRows==1):return(s)#numRows=1 特判tmp=[] for i in range(numRows):tmp.append([])#Z型數(shù)組i=0 #當(dāng)前遍歷到的s的下標(biāo)l=len(s)index=0 #當(dāng)前數(shù)組插入的狀態(tài)while(i<l):if(index==0):index=1for j in range(numRows):if(i<l):tmp[j].append(s[i])i=i+1else:break#index=0——這一列都有值elif(index==numRows-1):index=0#回到一開始index=0的狀態(tài),開始下一輪“循環(huán)”else:for j in range(numRows):if(j!=numRows-1-index):tmp[j].append(" ")else:tmp[j].append(s[i])i+=1index+=1 #每一列只有一個(gè)值非空ret=""for i in tmp:for j in i:if(j!=' '):ret+=jreturn(ret)2.2 方法2 不模擬Z型數(shù)組
記返回的數(shù)組為res。
->按順序遍歷字符串 s;
->res[i] += c: 把每個(gè)字符 c 填入對(duì)應(yīng)行?
->i += flag: 更新當(dāng)前字符 c 對(duì)應(yīng)的行索引;
->flag = - flag: 在達(dá)到 Z?字形轉(zhuǎn)折點(diǎn)時(shí),更新步數(shù)執(zhí)行反向。
可以看到,2.2的時(shí)間消耗比2.1小很多
總結(jié)
以上是生活随笔為你收集整理的文巾解题 6. Z 字形变换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch笔记:实现简易LSTM
- 下一篇: 文巾解题 7. 整数反转