使用堆栈反转字符串的 Swift 程序

swiftserver side programmingprogramming更新于 2025/9/19 13:52:17

堆栈是一种遵循 LIFO(后进先出)原则的数据结构。它用于存储和管理数据,其中最近添加的元素将最先从堆栈中移除。堆栈支持以下操作 -

  • 推送 - 它用于将元素添加到堆栈中。因此,在 Swift 中,我们通过 append() 方法实现推送操作。

语法

func push(_ items: T) {
    item.append(items)
}

此处,append() 函数将一个新元素推送到元素堆栈中。

  • 弹出 - 它用于从堆栈中移除元素。因此,在 Swift 中,我们通过 popLast() 方法实现弹出操作。

Syntax

func pop() -> T? {
   return item.popLast()
}

此处,popLast() 函数从堆栈中移除最近添加的元素。

  • isEmpty − 它用于检查堆栈是否为空。因此,在 Swift 中,我们通过使用 isEmpty 属性来实现此操作。

Syntax

 func isEmpty() -> Bool {
   return item.isEmpty
}

此处,isEmpty 属性用于在堆栈为空时返回 true。否则,如果堆栈不为空,则返回 false。

在 Swift 中,为了反转字符串,我们将使用基于数组和基于结构的堆栈实现。这是实现堆栈最常见且最直接的方法。

示例

Input: String = "Ram got first place"

Output: "ecalp tsrif tog maR"

这里,我们使用堆栈反转输入字符串。

算法

  • 步骤 1 - 创建一个接受输入字符串的函数。

  • 步骤 2 - 现在,此函数首先使用数组创建一个堆栈。

  • 步骤 3 - 将原始字符串中的所有字符推送到堆栈中。

  • 步骤 4 - 创建一个空字符串来存储结果。

  • 步骤 5 - 现在开始从堆栈中弹出最近添加的字符,直到堆栈为 isEmpty,并将它们存储到新字符串中。

  • 步骤 6 - 返回反转后的字符串。

  • 步骤 7 - 创建一个字符串。

  • 步骤 8 - 调用函数并将输入字符串作为参数传递。

  • 步骤 9 - 显示输出。

示例 1

在下面的 Swift 程序中,我们将使用堆栈保留一个字符串。为此,我们创建一个接受输入字符串的函数。然后,它使用数组实现创建一个堆栈。然后,它使用 append() 方法将给定字符串的所有字符推送到堆栈中。

然后,它创建一个空字符串来存储反转后的字符串。然后,当堆栈不为空时,它使用 popLast() 函数从堆栈中弹出字符,并将它们附加到新的空字符串中。最后,此函数使用堆栈返回反转后的字符串。

import Foundation
import Glibc

func reverseStringUsingStack(str: String) -> String {
   var myStack = [Character]()
    
   for char in str {
      myStack.append(char)
   }
    
   var reversedStr = ""
    
   while !myStack.isEmpty {
      reversedStr.append(myStack.popLast()!)
   }
   return reversedStr
}

let originalStr = "Learn String"
let resultantString = reverseStringUsingStack(str: originalStr)

print("原始字符串:", originalStr)
print("反转字符串:", resultantString)

输出

原始字符串:Learn String
反转字符串:gnirtS nraeL

示例 2

在下面的 Swift 程序中,我们将使用堆栈来保留一个字符串。因此,我们使用基于结构体的实现来实现堆栈。这里,我们定义了一个结构体,并包含 push、pop 和 isEmpty 方法。然后创建一个函数,在该函数中创建一个堆栈结构的实例,并将输入字符串的所有字符压入堆栈,然后以相反的顺序弹出它们,以创建一个反转的字符串。

import Foundation
import Glibc

// Implementing stack using structure
struct myStack<T> {
   private var item = [T]()
    
   mutating func push(_ items: T) {
      item.append(items)
   }
    
   mutating func pop() -> T? {
      return item.popLast()
   }
    
   func isEmpty() -> Bool {
      return item.isEmpty
   }
}

func reverseString(inputStr: String) -> String {
   var stack = myStack<Character>()
    
   for c in inputStr {
      stack.push(c)
   }
    
   var resultantStr = ""
    
   while !stack.isEmpty() {
      if let c = stack.pop() {
         resultantStr.append(c)
      }
   } 
   return resultantStr
}

let Str = "My cas color is green"
let reversedString = reverseString(inputStr: Str)

print("输入字符串为:\(Str)")
print("反转字符串为:\(reversedString)")

输出

输入字符串为:My cas color is green
反转字符串为:neerg si roloc sac yM

结论

以上就是如何使用 Stack 反转字符串。虽然 Swift 不支持任何内置的 Stack 数据结构,但我们仍然可以使用各种方式实现 Stack,例如链表、结构体、类、数组等。在所有方法中,实现 Stack 最简单、最直接的方法是使用数组。



相关文章



关于我们 | 隐私条款 | 学习路线
返回顶部