如何用C语言统计文本文件中唯一城市的数量?
嘿,我懂你的困扰啦——之前单纯数城市出现的次数(行数)没考虑重复,才会得到5这个错误结果对吧?咱们换个思路,核心就是先提取所有城市名,再去重统计,具体步骤如下:
正确解决步骤
1. 准确提取所有城市名
你的文本是「城市 + 价格」交替出现的模式,比如:
New York $255 New Jersey $19.90 Farmvill $300 Texas $400 New York $17.90
这里的关键是利用价格以$开头的特征来区分城市和价格:
- 先把整个文本按
$分割,得到的每一段(除了最后一段),前面的部分就是带多余空格和数字的城市相关内容,比如分割后第二段是255 New Jersey,我们只需要去掉开头的数字和空格,就能得到New Jersey; - 或者遍历文本内容,把连续的非
$开头的单词组合成城市名,直到遇到$开头的价格,就把组合好的城市名存起来(要注意处理像「New York」这种多单词的城市名,别直接按空格拆分)。
2. 用集合去重,统计数量
把所有提取到的城市名放进**集合(Set)**里——集合的特性就是自动剔除重复元素,重复的城市只会保留一个。之后直接获取集合的长度,就是唯一城市的数量了。
举个简单的伪代码示例:
# 假设已经提取好所有城市名到列表里 cities_list = ["New York", "New Jersey", "Farmvill", "Texas", "New York"] unique_cities = set(cities_list) unique_count = len(unique_cities) print(unique_count) # 输出4,这就是正确的唯一城市数量
小提醒
如果遇到更复杂的文本,只要抓住「价格带$」这个区分点,就能准确提取城市名,别再单纯按行数或者空格数统计啦,那样很容易忽略重复的情况。
内容的提问来源于stack exchange,提问作者GhostNANI




