這道題目是字串處理的題目。輸入乙個字串和乙個數字,將字串填入倒z形輸入字串,然後按照列讀取字元,得到乙個新的字元,輸出這個字元。例如:字串"paypalishiring",3pa
hnap
lsii
gyir
得到的新字元是」pahnaplsiigyir」。
這題只是簡單的字串處理。首先,我們可以對z形字串進行簡單優化一下,將z中的「折」合起來。比如:「abcdefghijkl」,4ag
bfhl
ceik
dj優化後:ag
bfhl
ceik
dj不難發現,得到的結果不變,而列表的列數減少了。在c和c++中可以直接定義乙個二維陣列,將字元讀入,然後直接讀取即可。但是用python初始化列表比較麻煩,我覺得直接通過下標規律可以直接得到,第一行和最後一行下乙個下標是上乙個+ 2*numrows – 2;而其他是先+ 2*(numrows - i) – 2 再+ 2*i,i是第幾行。
class solution(object):
def convert(self, s, numrows):
""":type s: str
:type numrows: int
:rtype: str
"""size = len(s)
if size <= numrows or numrows == 1:
return s
ans = ''
i = 0
while i < numrows:
j = i
if i == 0 or i == numrows - 1:
while j < size:
ans += s[j]
j += 2*numrows - 2
if 2 * numrows - 2 == 0:
break
else:
while j < size:
ans += s[j]
j += 2*(numrows - i) - 2
if j >= size:
break
ans += s[j]
j += 2*i
i += 1
return ans
7 1 Z字形輸出字串
本題要求你按照 z 字形輸出乙個字串。例如,對於字串 abcdefghij 若輸出寬度為 4,則第一行輸出abcd,第二行輸出hgfe,第三行輸出ij 若寬度為 3,則第一行輸出abc,第二行輸出fde,第三行輸出ghi,第四行輸出j j前帶有兩個空格 第一行輸入乙個不超過 100 的正整數 n,表...
LeeteCode 6字串Z型變換
用最原始的方法 1.先把字串轉換成n行2維陣列,按照規律存入二維陣列 2.然後對二維陣列 遍歷,存到目標字串 3 注意素組越界訪問和邊界值的設定 這個方法比較笨。執行的效率不高 define max size 1000 char converttomatrix char s,int numrows ...
帶T和Z的時間字串轉Long型
帶t和z的時間字串 string time 2017 11 18t07 12 06.615z 思路 1.先將最後的字母 z 替換為 utc 注意在utc前面有個空格!time time.replace z utc 2.使用常規的 dateformat來轉換 dateformat format new...