Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?
如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。
Python的str对象没有内置的反向函数。实施此方法的最佳方式是什么?
如果提供一个非常简洁的答案,请详细说明其效率。例如,str对象是否转换为其他对象等。
当前回答
以编程方式解决面试问题
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
其他回答
一个不那么令人困惑的方法是:
string = 'happy'
print(string)
“快乐”
string_reversed = string[-1::-1]
print(string_reversed)
'伊帕'
英语[-1::-1]如下:
“从-1开始,一直走,采取-1的步骤”
下面是如何使用for循环反转字符串:
string = "hello,world"
for i in range(-1,-len(string)-1,-1):
print (string[i], end=(" "))
这也是一种有趣的方式:
def reverse_words_1(s):
rev = ''
for i in range(len(s)):
j = ~i # equivalent to j = -(i + 1)
rev += s[j]
return rev
或类似:
def reverse_words_2(s):
rev = ''
for i in reversed(range(len(s)):
rev += s[i]
return rev
另一种更“奇特”的方式使用支持.reverse()的字节数组
b = bytearray('Reverse this!', 'UTF-8')
b.reverse()
b.decode('UTF-8')`
将产生:
'!siht esreveR'
def reverse(input):
return reduce(lambda x,y : y+x, input)
作为一种不同的解决方案(因为面试中会问到):
def reverse_checker(string):
ns = ""
for h in range(1,len(string)+1):
ns += string[-h]
print(ns)
if ns == string:
return True
else:
return False