摘要:按单词反转字符串是一道很常见的面试题。在中实现起来非常简单。上面的实现其实已经能满足大多数情况,但是并不完美。比如第二个字符串中的感叹号并没有被翻转,而且原字符串中的空格数量也没有保留。要改进上面的方案还不把问题复杂化,推荐使用模块。
按单词反转字符串是一道很常见的面试题。在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!
关于作者:Python技术爱好者,目前从事测试开发相关工作,转载请注明原文出处。
欢迎关注我的博客 http://betacat.online,你可以到我的公众号中去当吃瓜群众。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38211.html
摘要:反转字符串公众号爱写编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组的形式给出。解题思路第一个字符与最后一个交换位置,继而第二个与倒数第二个交换位置,一直交换到到中位数结束。持续交换它们所指向的元素,直到这两个指针相遇。 Leetcode 344:Reverse String 反转字符串 公众号:爱写bugWrite a function that reverses ...
摘要:反转字符串公众号爱写编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组的形式给出。解题思路第一个字符与最后一个交换位置,继而第二个与倒数第二个交换位置,一直交换到到中位数结束。持续交换它们所指向的元素,直到这两个指针相遇。 Leetcode 344:Reverse String 反转字符串 公众号:爱写bugWrite a function that reverses ...
摘要:公众号爱写给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例输入输出注意在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 公众号:爱写bug(ID:icodebugs) 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 Given a string, you need to revers...
摘要:公众号爱写给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例输入输出注意在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 公众号:爱写bug(ID:icodebugs) 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 Given a string, you need to revers...
阅读 1137·2021-09-26 09:46
阅读 1554·2021-09-06 15:00
阅读 672·2019-08-30 15:52
阅读 1071·2019-08-29 13:10
阅读 1258·2019-08-26 13:47
阅读 1452·2019-08-26 13:35
阅读 2010·2019-08-23 18:38
阅读 701·2019-08-23 17:59