📅  最后修改于: 2023-12-03 15:28:48.394000             🧑  作者: Mango
本题出自2006年的“门|门 IT”考试,是一道经典的编程问题。它可以帮助程序员加强对于数据结构的理解和应用。
你需要设计一个程序,对于给定的字符串,统计其中出现的所有单词的个数。其中,单词是指连续的非空字符序列,且每个单词只计数一次。忽略大小写。
例如,对于字符串 "The quick brown fox jumped over the lazy brown dog."
,其中单词个数为7。
输入一个字符串,长度不超过1000。
输出一个整数,表示给定字符串中出现的不同单词的个数。
The quick brown fox Jumped over the lazy brown dog.
8
可以按照以下步骤解决这个问题:
可以使用Python的collections库中的Counter和defaultdict方法来解决这个问题。下面是一个Python的实现示例:
import string
from collections import Counter, defaultdict
def count_words(text):
# 去除标点符号和空格
translator = str.maketrans('', '', string.punctuation)
text = text.translate(translator)
words = text.split()
# 统计单词出现的次数
counter = Counter(map(str.lower, words))
return len(counter)
text = "The quick brown fox Jumped over the lazy brown dog."
print(count_words(text))
# Output: 8
返回上述内容需按以下markdown格式:
# 门|门 IT 2006 |问题 37
## 题目描述
你需要设计一个程序,对于给定的字符串,统计其中出现的所有单词的个数。其中,单词是指连续的非空字符序列,且每个单词只计数一次。忽略大小写。
### 输入格式
输入一个字符串,长度不超过1000。
### 输出格式
输出一个整数,表示给定字符串中出现的不同单词的个数。
### 样例输入
The quick brown fox Jumped over the lazy brown dog.
### 样例输出
8
## 解题思路
可以按照以下步骤解决这个问题:
1. 去除字符串中的标点符号和空格,以便得到单词序列。
2. 将单词列表转换为小写形式,以便维护一个不区分大小写的单词集合。
3. 遍历单词序列,将单词添加到集合中。
4. 返回集合的大小。
## 代码实现
可以使用Python的collections库中的Counter和defaultdict方法来解决这个问题。下面是一个Python的实现示例:
```python
import string
from collections import Counter, defaultdict
def count_words(text):
# 去除标点符号和空格
translator = str.maketrans('', '', string.punctuation)
text = text.translate(translator)
words = text.split()
# 统计单词出现的次数
counter = Counter(map(str.lower, words))
return len(counter)
text = "The quick brown fox Jumped over the lazy brown dog."
print(count_words(text))
# Output: 8