當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等);點選文末“閱讀原文”瞭解詳情。
相關文章
- 技術面試中,當面試官「套路」你時,怎麼「反套路」回去?面試
- 如果想進入一家大公司面試,你會怎麼做?面試
- Linux當機了 你會怎麼辦?Linux
- 反轉字串字串
- 字串反轉字串
- 面試題:你工作中碰到的印象比較深的 bug,你怎麼處理的?面試題
- 你真的知道Python的字串怎麼用嗎?Python字串
- Python中怎麼轉換字串大小寫Python字串
- Python中列表和字串的反轉Python字串
- Java演算法面試題(008) 字串反轉Java演算法面試題字串
- 反轉字串(JavaScript)字串JavaScript
- 華為-字串反轉字串
- JavaScript 字串反轉JavaScript字串
- Python語言怎麼把列表轉為字串?Python字串
- Python 中的反轉字串:reversed()、切片等Python字串
- python怎麼拼接字串Python字串
- 當初,我怎麼會頭腦發熱選了Python!Java VS Python怎麼選?PythonJava
- 面試對話記錄,如果是你會怎麼回答?面試
- python字串怎麼解碼?Python字串
- 又面試了Python爬蟲工程師,碰到這麼幾道面試題,Python面試題No9Python爬蟲工程師面試題
- 面試遇到做過的題怎麼辦?面試
- 你都用python來做什麼?Python
- 除錯js碰到迴圈斷點(debugger),應該怎麼做?除錯JS斷點
- 字串: 怎樣在ANSI 和 UNICODE間做轉換 (轉)字串Unicode
- 字串或數字反轉字串
- Python面試你可能會被問到的面試題Python面試題
- 抖音短視訊怎麼做?3招帶你玩轉抖音
- 27道Redis精選面試題,你會做幾題?Redis面試題
- 當Python字串遇上MySQLPython字串MySql
- 你做不做? 做什麼啊——軟體工程 (轉)軟體工程
- python怎麼做web開發PythonWeb
- Day7(字串)|344.反轉字串 541.反轉字串II 54.替換數字字串
- 將一個字串進行反轉:將字串中指定部分進行反轉。比如“abcdefg”反轉為”abfedcg”字串
- 我曾經是怎麼做面試官的面試
- 碰到一個爛人怎麼辦
- 面試python崗位,提問:連線字串用join還是+,怎麼回答?面試Python字串
- 你究竟能用Python做什麼?Python
- javascript 字串字元順序反轉JavaScript字串字元