亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python中的反轉(zhuǎn)字符串問(wèn)題

tabalt / 2721人閱讀

摘要:按單詞反轉(zhuǎn)字符串是一道很常見的面試題。在中實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單。上面的實(shí)現(xiàn)其實(shí)已經(jīng)能滿足大多數(shù)情況,但是并不完美。比如第二個(gè)字符串中的感嘆號(hào)并沒(méi)有被翻轉(zhuǎn),而且原字符串中的空格數(shù)量也沒(méi)有保留。要改進(jìn)上面的方案還不把問(wèn)題復(fù)雜化,推薦使用模塊。

按單詞反轉(zhuǎn)字符串是一道很常見的面試題。在Python中實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單。

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

上面的實(shí)現(xiàn)其實(shí)已經(jīng)能滿足大多數(shù)情況,但是并不完美。比如第二個(gè)字符串中的感嘆號(hào)并沒(méi)有被翻轉(zhuǎn),而且原字符串中的空格數(shù)量也沒(méi)有保留。(在上面的例子里其實(shí)Hello和World之間不止一個(gè)空格)

我們期望的結(jié)果應(yīng)該是這樣子的。

print reverse_string_by_word(s)
# Expected: !World  Hello

要改進(jìn)上面的方案還不把問(wèn)題復(fù)雜化,推薦使用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< "

如果你覺(jué)得用切片將序列倒序可讀性不高,那么其實(shí)也可以這樣寫。

>>> "".join(reversed(re.split(r"(s+|w+)", s)))
"> !COM.EF to Welcome <"

一句話搞定,so easy!

關(guān)于作者:Python技術(shù)愛(ài)好者,目前從事測(cè)試開發(fā)相關(guān)工作,轉(zhuǎn)載請(qǐng)注明原文出處。

歡迎關(guān)注我的博客 http://betacat.online,你可以到我的公眾號(hào)中去當(dāng)吃瓜群眾。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/38211.html

相關(guān)文章

  • Leetcode 344:Reverse String 反轉(zhuǎn)符串python、java)

    摘要:反轉(zhuǎn)字符串公眾號(hào)愛(ài)寫編寫一個(gè)函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過(guò)來(lái)。輸入字符串以字符數(shù)組的形式給出。解題思路第一個(gè)字符與最后一個(gè)交換位置,繼而第二個(gè)與倒數(shù)第二個(gè)交換位置,一直交換到到中位數(shù)結(jié)束。持續(xù)交換它們所指向的元素,直到這兩個(gè)指針相遇。 Leetcode 344:Reverse String 反轉(zhuǎn)字符串 公眾號(hào):愛(ài)寫bugWrite a function that reverses ...

    Ajian 評(píng)論0 收藏0
  • Leetcode 344:Reverse String 反轉(zhuǎn)符串python、java)

    摘要:反轉(zhuǎn)字符串公眾號(hào)愛(ài)寫編寫一個(gè)函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過(guò)來(lái)。輸入字符串以字符數(shù)組的形式給出。解題思路第一個(gè)字符與最后一個(gè)交換位置,繼而第二個(gè)與倒數(shù)第二個(gè)交換位置,一直交換到到中位數(shù)結(jié)束。持續(xù)交換它們所指向的元素,直到這兩個(gè)指針相遇。 Leetcode 344:Reverse String 反轉(zhuǎn)字符串 公眾號(hào):愛(ài)寫bugWrite a function that reverses ...

    duan199226 評(píng)論0 收藏0
  • LeetCode 557:反轉(zhuǎn)符串中的單詞 III Reverse Words in a Str

    摘要:公眾號(hào)愛(ài)寫給定一個(gè)字符串,你需要反轉(zhuǎn)字符串中每個(gè)單詞的字符順序,同時(shí)仍保留空格和單詞的初始順序。示例輸入輸出注意在字符串中,每個(gè)單詞由單個(gè)空格分隔,并且字符串中不會(huì)有任何額外的空格。 公眾號(hào):愛(ài)寫bug(ID:icodebugs) 給定一個(gè)字符串,你需要反轉(zhuǎn)字符串中每個(gè)單詞的字符順序,同時(shí)仍保留空格和單詞的初始順序。 Given a string, you need to revers...

    CrazyCodes 評(píng)論0 收藏0
  • LeetCode 557:反轉(zhuǎn)符串中的單詞 III Reverse Words in a Str

    摘要:公眾號(hào)愛(ài)寫給定一個(gè)字符串,你需要反轉(zhuǎn)字符串中每個(gè)單詞的字符順序,同時(shí)仍保留空格和單詞的初始順序。示例輸入輸出注意在字符串中,每個(gè)單詞由單個(gè)空格分隔,并且字符串中不會(huì)有任何額外的空格。 公眾號(hào):愛(ài)寫bug(ID:icodebugs) 給定一個(gè)字符串,你需要反轉(zhuǎn)字符串中每個(gè)單詞的字符順序,同時(shí)仍保留空格和單詞的初始順序。 Given a string, you need to revers...

    Zachary 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<