🌈 Scala 实现
题目描述:
- 主管期望你来实现英文输入法单词联想功能。
- 需求如下:依据用户输入的单词前缀, 从已输入的英文语句中联想出用户想输入的单词, 按字典序输出联想到的单词序列, 如果联想不到, 请输出用户输入的单词前缀。
注意:
- 英文单词联想时区分大小写缩略形式如"don’t" 判定为两个单词 "don"和 "t"输出的单词序列不能有重复单词且只能是英文单词,不能有标点符号。
输入描述:
-
输入两行
-
首行输入一段由英文单词word和标点构成的语句str
-
接下来一行为一个英文单词前缀pre
-
0 < word.length() <= 20
-
0 < str.length <= 10000
-
0 < pre <=20
输出描述:
- 输出符合要求的单词序列或单词前缀,存在多个时,单词之间以单个空格分割
示例
输入:
- I love you
- He
输出:
- He
说明:
- 用户已输入单词语句"I love you",中提炼出"I",“love”,“you"三个单词 接下来用户输入"He” ,从已经输入信息中无法联想到符合要求的单词,所以输出用户输入的单词前缀。
输入:
- The furthest distance in the world,Is not between life and death,But when I stand in front or you,Yet you don’t know that I love you.
- f
输出:
- front furthest
代码:
def main(args: Array[String]): Unit = {
val strList = StdIn.readLine().split("\\W+").toSet // 获取输入的英文语句,并去重
val pre = StdIn.readLine() // 获取输入的单词
val buffer = new StringBuffer() // 记录结果
// 遍历语句中的单词,寻找联想的单词
for (elem <- strList) {
if (elem.startsWith(pre)) buffer.append(s"$elem ")
}
// 判断无法联想的特殊情况特殊情况
if (buffer.length == 0) buffer.append(s"$pre ")
print(buffer.toString()) // 输出结果
}
❤️ END ❤️