这被认为是O(1)空间复杂性(python)

这被认为是O(1)空间复杂性(python),python,string,algorithm,big-o,space-complexity,Python,String,Algorithm,Big O,Space Complexity,我正在解决以下问题: 实现一个函数来反转字符串中的单词。你的 函数应该使用O1空间。我爱玉米卷 这是我用Python编写的代码: def reverseSentence(sentence): sentence =sentence.split() for i in range((len(sentence)/2)): sentence[i], sentence[len(sentence)-1-i] = sentence[len(sentence)-1-i], sent

我正在解决以下问题:

实现一个函数来反转字符串中的单词。你的 函数应该使用O1空间。我爱玉米卷

这是我用Python编写的代码:

def reverseSentence(sentence):
    sentence =sentence.split()
    for i in range((len(sentence)/2)):
        sentence[i], sentence[len(sentence)-1-i] = sentence[len(sentence)-1-i], sentence[i]
    return " ".join(sentence)

print reverseSentence("I love tacos") 
# Outputs: tacos love I
最终,我担心这是否被视为O1空间复杂性,因为:

1我使用句子=句子.split。句子并没有在适当的地方被改变,而是我在改变句子并把它重新分配给可变句子


2我用蟒蛇a,b=b,a交换。从空间复杂性的角度来看,这是如何理解的?

在具有不变字符串的语言(如Python)中,这项任务实际上是不可能的。您不能在适当的位置更改句子。字符串在Python中是不可变的。感谢您的确认,我认为这在Python中是不可能的。当然,折衷的做法是Python允许您在键入和思考方面以较低的成本完成类似的操作,如:“”。joinReversedSession.split;如果你只是为了学习,你可以解决这个问题,句子是一个字符列表而不是一个字符串。