如何在Swift中交换字符对?


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

示例

输入

“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

// Function to swap pair of characters
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)
}

// Input string
let enterString: String = "Mohina"

// Calling the function
let resultantString = swappingPairsOfCharacters(inputString: enterString)

// Displaying the result
print("Original String:", enterString)
print("String after swapping pair of characters:", resultantString)

输出

Original String: Mohina
String after swapping pair of characters: oMihan

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

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

算法

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

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

步骤3 − 然后迭代给定字符串中存在的每个字符的索引。

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

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

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

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

步骤8 − 显示输出。

示例

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

import Foundation
import Glibc

// Function to swap pair of characters
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
}

// Input String
let testString = "Mumbai"

// Function calling
let resString = swapPairsOfCharacters(inputString: testString)

print("Original String:", testString)
print("String after swapping pair of characters:", resString)

输出

Original String: Mumbai
String after swapping pair of characters: uMbmia

现实生活中的应用

交换字符对的现实生活应用包括:

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

  • 它也可用于隐写术,以隐藏非秘密数据中的消息。

  • 它也可作为基于文本的游戏或谜题中的机制。

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

结论

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

更新于:2023年9月8日

343 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告