如何在 Swift 中交换字符对?

swiftserver side programmingprogramming

交换字符对是指在给定字符串中交换两个字符位置的过程。此操作常用于各种编程语言和应用程序中的数据操作。

示例

输入

"mumbai"

输出

umbmia

输入

"Prita"

输出

rPtia

在这里,我们将给定的字符串分成一对字符,例如"mumbai":"mu"、"mb"、"ai"。现在我们交换字符"um"、"bm"和"ia"的位置,得到结果字符串:"umbmia"。输入 2 也类似。

在 Swift 中,我们可以使用以下方法交换给定字符串中的字符对:

  • 通过转换为数组

  • 使用索引

方法 1:通过转换为数组交换字符对

要交换给定字符串中的字符对,我们首先使用 Array() 初始化函数将给定字符串转换为数组,然后交换字符对的位置,最后使用 String() 初始化函数转换回字符串。

算法

步骤 1 − 创建一个函数来交换字符对。

步骤 2 − 在函数内部,我们将字符串转换为字符数组。

步骤 3 − 使用 stride() 函数运行 for-in 循环,每次迭代两个字符并交换它们的位置。

步骤 4 − 现在将最终的数组转换回字符串。

步骤 5 − 返回结果字符串。

步骤 6 − 创建测试字符串。

步骤 7 − 现在调用该函数并将测试字符串传递给它。

步骤 8 − 显示输出。

示例

在下面的 Swift 程序中,我们将交换字符对。为此,我们创建了一个名为 swappingPairsOfCharacters() 的函数。该函数接受输入字符串作为参数,然后使用 Array() 初始化函数将输入字符串转换为字符数组。之后,它每次迭代两个字符,并使用 swapAt() 函数交换它们的位置。迭代完成后,最终的数组将使用 String() 初始化函数转换回字符串。

import Foundation
import Glibc

// 交换字符对的函数
func swappingPairsOfCharacters(inputString: String)-> String{
    var charArray = Array(inputString)
    
    for x in stride(from: 0, to: charArray.count-1, by: 2){
        charArray.swapAt(x, x+1)
    }
    return String(charArray)
}

// 输入字符串
let enterString: String = "Mohina"

// 调用函数
let resultantString = swappingPairsOfCharacters(inputString: enterString)

// 显示结果
print("原始字符串:", enterString)
print("交换字符对后的字符串:", resultantString)

输出

原始字符串:Mohina
交换字符对后的字符串:oMihan

方法 2:使用索引交换字符对

在此方法中,我们将借助索引值交换字符对。这里我们使用各种方法和属性(例如 index()、startIndex、endIndex 等)查找字符的索引。然后将结果附加到新字符串中。

算法

步骤 1 − 创建一个函数来交换一对字符。

步骤 2 − 在函数内部,我们创建一个空字符串来存储结果字符串,并创建一个变量来跟踪给定字符串中的当前位置。

步骤 3 − 然后遍历给定字符串中每个字符的索引。

步骤 4 − 在循环内部,我们使用 index() 方法找到字符的下一个索引。如果下一个字符在边界内,则循环继续交换字符,然后将交换后的字符添加到结果字符串中。

步骤 5 − 最后返回结果字符串。

步骤 6 − 创建测试字符串。

步骤 7 − 现在调用该函数并将测试字符串传递给它。

步骤 8 − 显示输出。

示例

在下面的 Swift 程序中,我们将交换字符对。为此,我们创建了一个名为 swapPairsOfCharacters() 的函数。此函数将输入字符串作为参数,然后遍历字符串中的每个字符。在循环内部,我们首先使用 index() 函数找到下一个索引,同时检查下一个索引是否在给定的边界内,如果是,则循环继续交换字符。它提取两个要交换的字符,然后使用 append() 函数将第二个字符先附加到结果字符串中,然后再附加第一个字符。如果下一个字符超出了输入字符串的末尾,则循环将最后一个字符原样附加到结果字符串的末尾。最后返回结果字符串。

import Foundation
import Glibc

// 交换字符对的函数
func swapPairsOfCharacters(inputString: String) -> String {

    var resultString = ""
    var iIndex = inputString.startIndex
    
    while iIndex < inputString.endIndex {
    
        let nextIndex = inputString.index(iIndex, offsetBy: 1, limitedBy: inputString.endIndex) ?? inputString.endIndex
        
        if nextIndex < inputString.endIndex {
            let firstChar = inputString[iIndex]
            let secondChar = inputString[nextIndex]
            
            resultString.append(secondChar)
            resultString.append(firstChar)
        } else {
            
            resultString.append(inputString[iIndex])
        }
        
        iIndex = inputString.index(iIndex, offsetBy: 2, limitedBy: inputString.endIndex) ?? inputString.endIndex
    }
    return resultString
}

// 输入字符串
let testString = "Mumbai"

// 函数调用
let resString = swapPairsOfCharacters(inputString: testString)

print("原始字符串:", testString)
print("交换字符对后的字符串:", resString)

输出

原始字符串:Mumbai
交换字符对后的字符串:uMbmia

实际应用

交换字符对的实际用法如下:

  • 它可用于自然语言数据增强,为训练机器创建文本数据的变体。

  • 它还可用于隐写术,将消息隐藏在非秘密数据中。

  • 它还可以用作基于文本的游戏或谜题的机制。

  • 一些字符串操作算法也使用交换字符对。

结论

这就是我们交换字符对的方法。这种交换对于加密和解密、文本转换、数据编码、算法开发、字符串字谜检测等都很有用。您可以使用以上任何一种方法来交换字符串中存在的字符对。


相关文章