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