接收给定的一行字符串(例:hello-hello,hi,job-hi,...,依次切割英文逗号和“-”,可以得到每个单词); 统计各单词出现的次数。 测试说明 平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
时间: 2024-09-27 21:18:10 浏览: 19
在编程中,要实现这个功能,通常需要先处理输入的字符串,然后使用哈希表(如Python中的字典,Java中的HashMap等)来存储每个单词及其出现的次数。下面是一个简单的Python示例:
```python
def word_count(s):
# 将字符串分割成单词列表,并移除标点符号
words = [word.strip("-,").lower() for word in s.split(",")]
# 创建空字典来存储单词计数
word_dict = {}
# 遍历单词列表并更新计数
for word in words:
if word in word_dict:
word_dict[word] += 1
else:
word_dict[word] = 1
return word_dict
# 测试例子
input_str = "hello-hello, hi, job-hi"
result = word_count(input_str)
print(result) # 输出:{'hello': 2, 'hi': 2, 'job': 1}
#
相关问题
Scala使用接收给定的一行字符串(例:hello-hello,hi,job-hi,...,依次切割英文逗号和“-”,可以得到每个单词); 统计各单词出现的次数。
Scala 中处理这样的字符串并统计单词出现次数,通常会利用其强大的函数式编程特性。你可以使用 `split` 函数将字符串按照指定的分隔符(这里是逗号和破折号)切割成单词列表,然后使用 `groupBy` 和 `count` 函数分别对单词进行分组并计算每个单词出现的次数。以下是使用 Scala 的示例代码:
```scala
import scala.util.Try
import collection.mutable.Map
def countWords(str: String): Map[String, Int] = {
// 使用 Try-catch 装饰以处理可能出现的异常,如空串或无效输入
val words = Try(str.split("\\s*,\\s*|-")).getOrElse(Nil)
// groupBy 将单词按键值(单词本身)分组,count 计算每个组的数量
val wordCounts = words.groupBy(identity).mapValues(_.size)
wordCounts
}
// 示例:
val inputString = "hello-hello,hi,job-hi,hello hi,world"
val wordCountMap = countWords(inputString)
println(wordCountMap) // 输出:Map(hello -> 3, hi -> 2, job -> 1, world -> 1)
Scala中接收给定的一行字符串(例:hello-hello,hi,job-hi,…,依次切割英文逗号和“-”,可以得到每个单词); 统计各单词出现的次数。 测试说明 平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
在Scala中,你可以使用`scala.util.Splitter`来按照指定的分隔符(在这里是英文逗号和破折号)对字符串进行切割,然后使用`Map`数据结构来统计每个单词的出现次数。以下是完成这个任务的一个示例:
```scala
import scala.collection.immutable.Map
import scala.util.Splitter
def wordCount(str: String): Map[String, Int] = {
// 使用Splitter按照逗号和破折号分割字符串
val words = str.split(",").flatMap(_.split("-"))
// 使用Map来存储单词及其计数,初始值为0
val wordCounts = words.map(word => (word, 0)).toMap
// 更新每个单词的计数
words.foreach(wordCounts(_) += 1)
wordCounts
}
// 测试示例
val testInput = "hello-hello,hi,job-hi"
val result = wordCount(testInput)
println(result) // 输出: Map(hello -> 2, hi -> 2, job -> 1)
```
在这个例子中,我们首先创建了一个`words`列表,其中包含了所有经过切割后的单词。接着,我们将这些单词作为键(key),对应的值初始化为0的映射`wordCounts`。最后遍历`words`并更新`wordCounts`。