Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?
如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。
Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?
如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。
当前回答
递归方法:
def reverse(s): return s[0] if len(s)==1 else s[len(s)-1] + reverse(s[0:len(s)-1])
例子:
print(reverse("Hello!")) #!olleH
其他回答
使用切片:
>>> 'hello world'[::-1]
'dlrow olleh'
切片符号采用[start:stop:step]的形式。在这种情况下,我们省略了开始和停止位置,因为我们需要整个字符串。我们还使用step=-1,意思是“从右到左重复一个字符”。
以编程方式解决面试问题
def reverse_a_string(string: str) -> str:
"""
This method is used to reverse a string.
Args:
string: a string to reverse
Returns: a reversed string
"""
if type(string) != str:
raise TypeError("{0} This not a string, Please provide a string!".format(type(string)))
string_place_holder = ""
start = 0
end = len(string) - 1
if end >= 1:
while start <= end:
string_place_holder = string_place_holder + string[end]
end -= 1
return string_place_holder
else:
return string
a = "hello world"
rev = reverse_a_string(a)
print(rev)
输出:
dlrow olleh
有多种方法可以在Python中反转字符串
切片方法
string = "python"
rev_string = string[::-1]
print(rev_string)
使用反向函数
string = "python"
rev= reversed(string)
rev_string = "".join(rev)
print(rev_string)
使用递归
string = "python"
def reverse(string):
if len(string)==0:
return string
else:
return reverse(string[1:])+string[0]
print(reverse(string))
使用for循环
string = "python"
rev_string =""
for s in string:
rev_string = s+ rev_string
print(rev_string)
使用while循环
string = "python"
rev_str =""
length = len(string)-1
while length >=0:
rev_str += string[length]
length -= 1
print(rev_str)
@保罗的s[::-1]是最快的;较慢的方法(可能更可读,但这是有争议的)是“”.join(颠倒)。
下面是如何使用for循环反转字符串:
string = "hello,world"
for i in range(-1,-len(string)-1,-1):
print (string[i], end=(" "))