📜  堆栈 | Set 3(使用堆栈反转字符串)(1)

📅  最后修改于: 2023-12-03 15:37:49.664000             🧑  作者: Mango

堆栈 | Set 3(使用堆栈反转字符串)

在本文中,我们将探讨如何使用堆栈数据结构来反转一个字符串。请确保您已经了解什么是堆栈数据结构,如果不了解请查看堆栈简介

算法

以下是用于反转字符串的算法:

  1. 创建一个空堆栈。
  2. 将字符串中的每个字符压入堆栈中。
  3. 弹出堆栈元素并将它们连接到一起形成反转字符串。
实现

以下是使用Python实现一个函数来反转一个字符串的示例:

def reverse_string(input_string):
    stack = []
    output_string = ""

    # 遍历字符串并将字符压入堆栈中
    for char in input_string:
        stack.append(char)

    # 从堆栈弹出字符并连接形成反转字符串
    while len(stack) > 0:
        output_string += stack.pop()

    return output_string

我们可以调用这个函数来反转一个字符串:

input_string = "Hello, World!"
output_string = reverse_string(input_string)

print("Input String : ", input_string)
print("Output String : ", output_string)

输出:

Input String :  Hello, World!
Output String :  !dlroW ,olleH
复杂度分析
  • 时间复杂度:O(n) 遍历并将每个字符压入堆栈需要O(n)时间,利用堆栈弹出每个字符并将其连接到反转字符串需要O(n)时间。因此算法总的时间复杂度为O(n)。
  • 空间复杂度:O(n) 需要使用一个堆栈数据结构来压入字符。对于长度为n的字符串,堆栈的大小将是O(n)。只有额外的空间存储反转字符串,所以空间复杂度为O(n)。