Swift程序查找字符串中重复的字符
在Swift中,字符串是字符的集合,因此它可以包含重复字符和唯一字符。所以,为了查找字符串中重复的字符,我们创建了一个字典/数组来存储每个字符的计数,然后将计数大于1的字符添加到数组中。
示例
Input: “sky is pink” Output: Duplicate char: [“s”, “i”, “k”]
这里,输入字符串包含三个重复字符,分别是“s”、“i”和“k”。
为了查找字符串中重复的字符,我们将使用以下方法:
用户自定义函数
使用Array()和filter()方法
使用NSCountedSet
方法1:使用用户自定义函数
为了查找字符串中重复的字符,我们将创建一个函数,该函数将输入字符串作为参数,并返回输入字符串中存在的所有重复元素。
算法
步骤1 - 创建一个函数来查找字符串中重复的字符。
步骤2 - 在函数内部将输入字符串转换为小写,以便我们可以非常有效地执行操作。
步骤3 - 创建一个字典来存储字符及其计数。
步骤4 - 创建一个数组来存储重复字符。
步骤5 - 遍历给定字符串的每个字符。
步骤6 - 如果字典中已存在某个字符,则将其计数器加1。否则,将该字符添加到字典中,计数为1。
步骤7 - 计算完字符出现的次数后,我们遍历每个键值对,并将计数器大于1的字符添加到数组中。
步骤8 - 完成循环后,返回数组。
步骤9 - 创建一个字符串
步骤10 - 调用该函数并将输入字符串作为参数传递给它,并将结果存储在数组中。
步骤11 - 显示输出。
示例
在下面的Swift程序中,我们将查找字符串中的重复字符。为此,我们创建了一个函数,该函数将字符串作为输入。此函数创建一个字典来存储字符及其计数。然后,它使用for-in循环遍历字符串的每个字符,如果找到重复字符,则将其计数器加1,否则,它将字符及其计数1添加到字典中。在计算完所有字符出现的次数后,该函数使用for-in循环遍历字典的键值对,并将计数大于1的字符添加到数组中。在遍历完所有键值对后,此函数返回一个包含重复元素的数组。
import Foundation
import Glibc
func findDuplicateChar(myStr: String) -> [Character]
{
let newStr = myStr.lowercased()
var charCount = [Character: Int]()
var duplicateChar = [Character]()
for c in newStr
{
if let counter = charCount[c]
{
charCount[c] = counter + 1
} else {
charCount[c] = 1
}
}
for (c, counter) in charCount
{
if counter > 1
{
duplicateChar.append(c)
}
}
return duplicateChar
}
let input = "Tom travel to Japan"
let duplicateChar = findDuplicateChar(myStr: input)
print("Duplicate Characters are:", duplicateChar)
输出
Duplicate Characters are: ["t", "o", "a", " "]
方法2:使用Array()和filter()方法
为了查找字符串中的重复字符,首先使用Array()初始化器将输入字符串转换为字符数组。
语法
Array(inputString)
这里,Array()初始化器只接受一个参数,并将其转换为数组。
之后,我们将使用filter()方法查找重复字符。filter()方法返回一个满足给定条件的元素数组。
语法
func filter(mSlosure)
这里,mClosure是闭包,它逐个获取元素,并检查它是否满足给定条件。如果是,则将该元素包含在结果数组中。
算法
步骤1 - 创建一个字符串。
步骤2 - 将输入字符串转换为字符数组。
步骤3 - 查找重复字符。
步骤4 - 显示输出。
示例
在下面的Swift程序中,我们将查找字符串中的重复字符。为此,创建一个字符串。然后使用Array()初始化器将字符串转换为字符数组。然后使用filter()函数计算给定数组中每个字符出现的次数。如果计数大于1,则该字符是重复的,因此将该元素添加到新数组中。否则,不添加。过滤完所有字符后,我们将检查新数组是否为空。如果新数组为空,则打印“未找到重复字符”。否则,打印重复字符。
import Foundation
import Glibc
var StringVal = "Meeta is cooking Paratha"
let charArray = Array(StringVal)
let duplicatesChars = charArray.filter({ c in
return charArray.filter({ $0 == c }).count > 1
})
if duplicatesChars.isEmpty {
print("No duplicate characters is found.")
} else {
print("Duplicate characters: \(duplicatesChars)")
}
输出
Duplicate characters: ["e", "e", "t", "a", " ", "i", " ", "o", "o", "i", " ", "a", "a", "t", "a"]
方法3:使用NSCountedSet
为了查找字符串中的重复字符,我们还可以使用NSCountedSet类。它是一个无序的可变的唯一对象的集合。
语法
NSCountedSet()
此构造函数用于创建已计数的集合对象。
算法
步骤1 - 创建一个字符串。
步骤2 - 将输入字符串转换为字符数组。
步骤3 - 查找重复字符。
步骤4 - 显示输出。
示例
在下面的Swift程序中,我们将查找字符串中的重复字符。为此,创建一个字符串。然后使用Array()初始化器将字符串转换为字符数组。然后使用filter()函数计算给定数组中每个字符出现的次数。如果计数大于1,则该字符是重复的,因此将该元素添加到新数组中。否则,不添加。过滤完所有字符后,我们将检查新数组是否为空。如果新数组为空,则打印“未找到重复字符”。否则,打印重复字符。
import Foundation
import Glibc
var StringVal = "Meeta is cooking Paratha"
let charArray = Array(StringVal)
let duplicatesChars = charArray.filter({ c in
return charArray.filter({ $0 == c }).count > 1
})
if duplicatesChars.isEmpty {
print("No duplicate characters is found.")
} else {
print("Duplicate characters: \(duplicatesChars)")
}
输出
Duplicate characters: ["e", "e", "t", "a", " ", "i", " ", "o", "o", "i", " ", "a", "a", "t", "a"]
方法3:使用NSCountedSet
为了查找字符串中的重复字符,我们还可以使用NSCountedSet类。它是一个无序的可变的唯一对象的集合。
语法
NSCountedSet()
此构造函数用于创建已计数的集合对象。
算法
步骤1 - 创建一个字符串。
步骤2 - 将输入字符串转换为字符数组。
步骤3 - 查找重复字符。
步骤4 - 显示输出。
示例
在下面的Swift程序中,我们将查找字符串中的重复字符。为此,创建一个字符串。然后使用NSCounted()构造函数创建一个NSCountedSet类对象来跟踪已计数的字符。然后,我们将使用Array()初始化器将字符串转换为字符数组。然后使用add()方法将元素添加到countedSet中。然后创建一个新的字符类型数组来存储结果。现在遍历每个字符,并检查该字符的计数是否大于1。如果是,则将该字符添加到新数组中。否则,不添加。检查完所有字符后,我们将检查新数组是否为空。如果新数组为空,则打印“未找到重复字符”。否则,打印重复字符。
import Foundation
import Glibc
var StringVal = "Meeta is cooking Paratha"
let countedSet = NSCountedSet()
let charArray = Array(StringVal)
charArray.forEach { countedSet.add($0) }
var duplicateChar = [Character]()
// Iterate through each character and find duplicates
for c in charArray {
if countedSet.count(for: c) > 1 && !duplicateChar.contains(c) {
duplicateChar.append(c)
}
}
if duplicateChar.isEmpty {
print("No duplicate characters found.")
} else {
print("Duplicate characters: \(duplicateChar)")
}
输出
Duplicate characters: ["e", "t", "a", " ", "i", "o"]
结论
这就是我们如何查找字符串中重复字符的方法。查找重复字符有助于识别错误或不一致之处、数据验证、字符串分析、字符串操作等。因此,使用上述方法,您可以有效地找到字符串中存在的所有重复字符。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP