力扣學習筆記day17

2021-10-18 07:00:07 字數 2136 閱讀 9785

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。

不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 o(1) 的額外空間解決這一問題。

你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。

eg

輸入:[「h」,「e」,「l」,「l」,「o」]

輸出:[「o」,「l」,「l」,「e」,「h」]

本題比較簡單,可以直接把陣列倒序

s[:]

=s[::-

1]return s

或者使用雙指標法,每次用兩個指標指向剩餘未交換的字串的兩頭,交換完後向中間靠攏。

l=

len(s)

for i in

range

(l//2)

: s[i]

,s[l-i-1]

=s[l-i-1]

,s[i]

return s

給定乙個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。

eg

輸入:「let』s take leetcode contest」

輸出:「s』tel ekat edocteel tsetnoc」

假設字串為「one two three」

本題比較簡單,首先想到的

用s.split(" ")把字串分割成乙個個單詞

[「one」,「two」,「three」]

然後把每個單詞反轉,word=word[::-1]

[「eno」,「owt」,「eerht」]

最後把反轉後的單詞再合到一起," ".join(word)

l=s.split(

" ")

res=

for word in l:::

-1])

return

' '.join(res)

一行**:

return

' '.join(word[::

-1]for word in s.split(

" ")

)

第二種思路

用l=s.split(" ")把字串分割成乙個個單詞

[「one」,「two」,「three」]

把整個列表反轉

[「three」,「two」,「one」]

以空格分隔,將列表合併「 」.join(l)

「three two one」

將整個字串反轉,輸出

l=s.split(

" ")l[:

]=l[::

-1]res=

" ".join(l)

return res[::

-1]

一行**

return

" ".join(s.split(

" ")[:

:-1]

)[::

-1]

第三種思路

先反轉字串,s=s[::-1]

[「eerht owt eno」]

分割成乙個個單詞,l=s.split(』 ')

[「eerht」, 「owt」, 「eno」]

翻轉列表 l[:]=l[::-1]

[「eno」, 「owt」, 「eerht」]

拼接輸出

s=s[::

-1]l=s.split(

" ")l[:

]=l[::

-1]res=

" ".join(l)

return res

一行**

return

" ".join(s[::

-1].split(

" ")[:

:-1]

)

day17學習筆記(物件導向)

1 類屬性 定義在類中的變數 類屬性的值不會因為物件的不同而不同 2 物件屬性 通過 self.屬性名 值 定義在 init 函式中的屬性 物件屬性的值會因為物件不同而不同 物件.屬性 獲取物件指定屬性的值 getattr 物件,屬性名 獲取物件指定屬性的值 getattr 物件,屬性名,預設值 獲...

python學習筆記 day17 初識遞迴

從前有座山,山上有座廟,廟裡有個老和尚,老和尚再給小和尚講故事 從前有座山,山上有座廟.這其實就是乙個遞迴的例子,只不過這是只遞不歸,再比如這段 def story print 從前有座山 story story 呼叫story 會不斷地執行裡面的 不斷又呼叫story 我們都知道當呼叫函式的時候,...

python學習day17 遞迴函式

遞迴函式 def age n if n 4 return 40 elif n 0 and n 4 return age n 1 2 print age 1 46 只要寫遞迴函式,必須要有結束條件。二分法查詢 l 2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55...