Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth
Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

42,623 questions

55,358 answers

573 users

How to get common letters that appear in every word in a list of words with Swift

1 Answer

0 votes
import Foundation

/*
    Efficient algorithm using Swift Sets:
    ------------------------------------
    Each word is converted into a Set<Character> of its unique letters.

    Example:
        "algebraic" -> Set(["a","l","g","e","b","r","i","c"])

    Then:
        - Start with the set of letters from the first word.
        - Intersect with each subsequent word's letter set.
        - The final set contains letters common to all words.

    This uses Swift's built-in:
        - Set<Character>
        - intersection()
        - map, dropFirst(), and functional decomposition
*/


// Convert a word into a Set<Character> of its unique letters
func lettersOf(_ word: String) -> Set<Character> {
    return Set(word)
}


// Compute letters common to all words
func commonLetters(_ words: [String]) -> Set<Character> {
    guard let first = words.first else { return [] }

    // Start with letters of the first word
    var common: Set<Character> = lettersOf(first)

    // Intersect with each subsequent word
    for word in words.dropFirst() {
        let current: Set<Character> = lettersOf(word)
        common = common.intersection(current)
    }

    return common
}


// Print letters in sorted order
func printLetters(_ letters: Set<Character>) {
    let sorted = letters.sorted()
    print(sorted.map { String($0) }.joined(separator: " "))
}


// Main program
let words: [String] = [
    "algebraic",
    "alphabetic",
    "ambiance",
    "abacus",
    "metabolic",
    "parabolic",
    "playback",
    "drawback",
    "fabricate",
    "flashback",
    "syllabic"
]

let result: Set<Character> = commonLetters(words)

print("Common letters across all words:")
printLetters(result)


/*
run:

Common letters across all words:
a b c

*/

 



answered Jul 10 by avibootz

Related questions

...