统计输入单词的个数

C++动态字典实现

struct Pair
{
 string name;
 double val;
};

vector<Pair>pairs;

double& value(const string&s)
{
 for(int i = 0; i < pairs.size(); ++i)
  if( s == pairs[i].name) return pairs[i].val;

 Pair p = {s,0};
 pairs.push_back(p);

 return pairs[pairs.size() - 1].val;
}


int main()
{
 string buf;
 
 while(cin>>buf && buf != "exit") value(buf)++;

 for( vector<Pair>::const_iterator p = pairs.begin(); p!= pairs.end(); ++p)
  cout<<p->name<<":"<<p->val<<"/n";
 
 system("pause");

 return 0;

### 实现统计单词个数功能 为了实现在 PTA 平台上统计单词个数的功能,可以采用多种编程语言来完成这一任务。这里提供一种基于 Python 的解决方案。 #### 方法概述 程序接收一段文本作为输入,并返回这段文本中不同单词数量。考虑到实际应用中的复杂情况,如大小写敏感性和特殊字符处理等问题,在设计算法时应充分考虑这些因素。 #### 处理逻辑 1. 清洗数据:去除多余的空白符并统一转换成小写字母; 2. 使用正则表达式分割字符串为单个词语列表; 3. 统计各个单词出现次数; 以下是具体的Python代码实现: ```python import re from collections import Counter def count_words(text): # 去除首尾多余空格并将所有字母变为小写 cleaned_text = text.strip().lower() # 正则匹配仅保留英文单词部分 words_list = re.findall(r'\b[a-z]+\b',cleaned_text) word_counts = dict(Counter(words_list)) return word_counts if __name__ == "__main__": input_string = " Hello world! This is a test string... String with multiple spaces and punctuation marks!!!" result = count_words(input_string) print(result) ``` 此段代码首先通过 `strip()` 函数去除了原始字符串两端不必要的空白字符,并调用了 `lower()` 将其全部转化为小写形式以便于后续比较操作。接着利用正则表达式的 `\b` 边界限定符以及 `[a-z]+` 来精确提取出每一个独立的英语单词。最后借助内置模块 `collections.Counter` 对得到的结果进行了快速有效的频次统计[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值