當Python面試 碰到 反轉字串,你會怎麼做?
來源:公眾號-哎媽呀Bug
連結:
https://mp.weixin.qq.com/s/wC5x8fRAwVvZYs3YGVr5iw
按單詞反轉字串是一道很常見的面試題。在Python中實現起來非常簡單。
def reverse_string_by_word(s):
lst = s.split() # split by blank space by default
return ' '.join(lst[::-1])
s = 'Power of Love'
print reverse_string_by_word(s)
# Love of Power
s = 'Hello World!'
print reverse_string_by_word(s)
# World! Hello
上面的實現其實已經能滿足大多數情況,但是並不完美。比如第二個字串中的感嘆號並沒有被翻轉,而且原字串中的空格數量也沒有保留。(在上面的例子裡其實Hello和World之間不止一個空格)
我們期望的結果應該是這樣子的。
print reverse_string_by_word(s)
# Expected: !World Hello
要改進上面的方案還不把問題複雜化,推薦使用re
模組。你可以查閱re.split()
的官方文件。我們看一下具體例子。
>>> import re
>>> s = 'Hello World!'
>>> re.split(r'\s+', s) # will discard blank spaces
['Hello', 'World!']
>>> re.split(r'(\s+)', s) # will keep spaces as a group
['Hello', ' ', 'World!']
>>> s = '< Welcome to EF.COM! >'
>>> re.split(r'\s+', s) # split by spaces
['<', 'Welcome', 'to', 'EF.COM!', '>']
>>> re.split(r'(\w+)', s) # exactly split by word
['< ', 'Welcome', ' ', 'to', ' ', 'EF', '.', 'COM', '! >']
>>> re.split(r'(\s+|\w+)', s) # split by space and word
['<', ' ', '', 'Welcome', '', ' ', '', 'to', '', ' ', '', 'EF', '.', 'COM', '!', ' ', '>']
>>> ''.join(re.split(r'(\s+|\w+)', s)[::-1])
'> !COM.EF to Welcome <'
>>> ''.join(re.split(r'(\s+)', s)[::-1])
'> EF.COM! to Welcome <'
>>> ''.join(re.split(r'(\w+)', s)[::-1])
'! >COM.EF to Welcome< '
如果你覺得用切片將序列倒序可讀性不高,那麼其實也可以這樣寫。
>>> ''.join(reversed(re.split(r'(\s+|\w+)', s)))
'> !COM.EF to Welcome <'
一句話搞定,so easy!
《機器學習 第九期》從零到機器學習實戰專案,提供GPU&CPU雙雲平臺,作業考試1V1批改(優秀學員內推BAT等);點選文末“閱讀原文”瞭解詳情。
相關文章
- 技術面試中,當面試官「套路」你時,怎麼「反套路」回去?面試
- 如果想進入一家大公司面試,你會怎麼做?面試
- 又面試了Python爬蟲工程師,碰到這麼幾道面試題,Python面試題No9Python爬蟲工程師面試題
- 面試題:你工作中碰到的印象比較深的 bug,你怎麼處理的?面試題
- Python中列表和字串的反轉Python字串
- Python中怎麼轉換字串大小寫Python字串
- Python 中的反轉字串:reversed()、切片等Python字串
- Python語言怎麼把列表轉為字串?Python字串
- JavaScript 字串反轉JavaScript字串
- 反轉字串(JavaScript)字串JavaScript
- 你真的知道Python的字串怎麼用嗎?Python字串
- 面試對話記錄,如果是你會怎麼回答?面試
- 面試遇到做過的題怎麼辦?面試
- 面試python崗位,提問:連線字串用join還是+,怎麼回答?面試Python字串
- 華為-字串反轉字串
- python怎麼拼接字串Python字串
- 27道Redis精選面試題,你會做幾題?Redis面試題
- java 反轉單連結串列,偶爾會遇到的面試題Java面試題
- 面試怎麼體現你的測試深度面試
- 我曾經是怎麼做面試官的面試
- 除錯js碰到迴圈斷點(debugger),應該怎麼做?除錯JS斷點
- 當人手忙不過來時,你還會做程式碼測試嗎?
- 當初,我怎麼會頭腦發熱選了Python!Java VS Python怎麼選?PythonJava
- 字串或數字反轉字串
- LeetCode初級-反轉字串LeetCode字串
- Leedcode-反轉字串 II字串
- LeetCode-344-反轉字串LeetCode字串
- 面試:在面試中關於List(ArrayList、LinkedList)集合會怎麼問呢?你該如何回答呢?面試
- 將一個字串進行反轉:將字串中指定部分進行反轉。比如“abcdefg”反轉為”abfedcg”字串
- python字串怎麼解碼?Python字串
- 一道神奇的Python面試題,你會嗎?Python面試題
- 【Redis面試題】Redis的字串是怎麼實現的?Redis面試題字串
- 寫給那些會做不會說的測試員!“它”正在摧毀你的面試……面試
- 反轉!Python再次衛冕2020年程式設計榜,Java和C回落,你怎麼看?Python程式設計Java
- Day7(字串)|344.反轉字串 541.反轉字串II 54.替換數字字串
- 面試:你知道為什麼會有 Generator 嗎面試
- 面試必備的「反轉連結串列」面試
- 面試問你為什麼要用Spring怎麼答?面試Spring