You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala构建字符到整数映射的简洁语法及单词分值计算方法

嘿,这事儿不难!先给你捋清楚步骤:

首先,你生成字符到分值映射的思路是完全没问题的,我稍微调整了下变量名让它更直观,同时去掉了多余的逗号(避免编译警告):

// 先构建字符到分值的映射表
val charToScore = Map(
  1 -> Set('A', 'B', 'C'),
  2 -> Set('D', 'E', 'F'),
  // 这里可以继续补充其他分组,比如 3 -> Set('G','H','I'),按你的需求扩展就行
).flatMap { case (score, chars) => chars.map(_ -> score) }

这段代码会生成一个Map[Char, Int],比如'A' -> 1、'D' -> 2这类键值对,完全符合你的需求。

接下来就是计算单词分值了,写一个简单的函数就能搞定:

def calculateWordScore(word: String): Int = {
  // 先把单词转成大写,兼容小写输入的情况
  word.toUpperCase
    // 对每个字符取对应的分值,遇到不在映射里的字符默认给0(你也可以改成抛异常,看需求)
    .map(char => charToScore.getOrElse(char, 0))
    // 把所有分值加起来
    .sum
}

测试一下你给的例子:

println(calculateWordScore("ABCD")) // 输出 5,正好是1+1+1+2的结果
println(calculateWordScore("abcD")) // 同样输出5,因为自动转成了大写

如果你的需求是必须只处理映射里的字符,遇到陌生字符要报错,那可以把getOrElse(char, 0)改成直接charToScore(char),这样遇到不在映射里的字符会抛出NoSuchElementException,你可以根据实际场景选择。

内容的提问来源于stack exchange,提问作者Dreeww

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:21:31