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

55,396 answers

573 users

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

1 Answer

0 votes
/*
    Efficient algorithm using Scala Sets:
    -------------------------------------
    Each word is converted into a Set[Char] 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 Scala's built-in:
        - Set[Char]
        - intersect (&)
        - map, drop, and functional decomposition
*/

object CommonLettersApp {

  // Convert a word into a Set[Char] of its unique letters
  def lettersOf(word: String): Set[Char] =
    word.toSet

  // Compute letters common to all words
  def commonLetters(words: List[String]): Set[Char] = {
    if (words.isEmpty) return Set.empty

    // Start with letters of the first word
    var common: Set[Char] = lettersOf(words.head)

    // Intersect with each subsequent word
    for (word <- words.drop(1)) {
      val current: Set[Char] = lettersOf(word)
      common = common & current   // Scala's built-in set intersection
    }

    common
  }

  // Print letters in sorted order
  def printLetters(letters: Set[Char]): Unit = {
    println(letters.toList.sorted.mkString(" "))
  }

  def main(args: Array[String]): Unit = {
    val words: List[String] = List(
      "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

...