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,844 questions

55,671 answers

573 users

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

1 Answer

0 votes
/*
    Efficient algorithm using Kotlin Sets:
    --------------------------------------
    Each word is converted into a Set<Char> of its unique letters.

    Example:
        "algebraic" -> setOf('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 Kotlin's built-in:
        - Set<Char>
        - intersect()
        - map, drop, and functional decomposition
*/


// Convert a word into a Set<Char> of its unique letters
fun lettersOf(word: String): Set<Char> =
    word.toSet()


// Compute letters common to all words
fun commonLetters(words: List<String>): Set<Char> {
    if (words.isEmpty()) return emptySet()

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

    // Intersect with each subsequent word
    for (word in words.drop(1)) {
        val current: Set<Char> = lettersOf(word)
        common = common.intersect(current)
    }

    return common
}


// Print letters in sorted order
fun printLetters(letters: Set<Char>) {
    println(letters.sorted().joinToString(" "))
}


fun main() {
    val words: List<String> = listOf(
        "algebraic",
        "alphabetic",
        "ambiance",
        "abacus",
        "metabolic",
        "parabolic",
        "playback",
        "drawback",
        "fabricate",
        "flashback",
        "syllabic"
    )

    val result: Set<Char> = commonLetters(words)

    println("Common letters across all words:")
    printLetters(result)
}


/*
run:

Common letters across all words:
a b c

*/

 



answered Jul 10 by avibootz

Related questions

...