gpt4 book ai didi

string - 使用 Scala 如何找出字符串中是否存在字符列表,其中是否存在重复字符?

转载 作者:行者123 更新时间:2023-12-02 06:37:14 26 4
gpt4 key购买 nike

考虑以下示例,我有一组给定的单词和一组给定的字符。我必须找出是否有一个单词可以从字符列表中组成,同时尊重重复 - 即该单词是字符多重集的多重集子集。因此,对于字符 List('a', 'p', 'q', 'r', 's'),单词 "apqsrr" 不是一个有效的解决方案,因为它包含两个'r'。我能想到的通常解决方案是迭代单词的字符,如果在字符中找到匹配项,则从字符列表中删除该字符。这可以处理重复项,但我不知道如何以更功能性的方式在 scala 中编写它。

根据我对 scala 的了解,我能够编写以下代码,如果没有重复的字母,该代码可以正常工作。

val words = List("apqsrr", "avadavat", "avail", "availability", "available", 
"avalanche", "avantgarde", "avarice")
val chars = List('a', 'p', 'q', 'r', 's')

for (w <- words if w.forall(chars.contains)) yield w

// another way
words.find(_.forall(chars.contains))

最佳答案

scala> words.find(_.diff(chars).isEmpty)
res0: Option[String] = None

scala> val chars = List('a','p','q','r','s','r') // Added another 'r'
chars: List[Char] = List(a, p, q, r, s, r)

scala> words.find(_.diff(chars).isEmpty)
res1: Option[String] = Some(apqsrr)

关于string - 使用 Scala 如何找出字符串中是否存在字符列表,其中是否存在重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25216806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com