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"]
結論
這就是我們如何查詢字串中重複字元的方法。查詢重複字元有助於識別錯誤或不一致之處、資料驗證、字串分析、字串操作等。因此,使用上述方法,您可以有效地找到字串中存在的所有重複字元。