首页 > 其他 > 详细

紫书—关于例题5-3安迪的第一个字典的思考

时间:2021-05-10 10:41:58      阅读:9      评论:0      收藏:0      [点我收藏+]

  题目链接:https://vjudge.net/problem/UVA-10815

  解题思路:题意是说寻找不重复的单词,这时就可以想到用stl中的集合,但是写代码时还是要注意一点细节.

  AC代码展示:

#include<bits/stdc++.h>
using namespace std;
set<string>dict;
string a;
int main(){
    char ch;
    while((ch=getchar())!=EOF){ //不能用cin大段输入  应为样例中有“”
        if(isalpha(ch)){//判断是否是字母
            ch=tolower(ch);
            a+=ch;
        }else{
            if(a!=""){ // 避免加入的是空字符串
                if(!dict.count(a)){ //判断字符串是否存在
                    dict.insert(a);
                }
                a.clear();
            }
        }
    }
    for(auto i=dict.begin();i!=dict.end();i++){// 迭代器遍历集合元素
        cout<<*i<<endl; //与指针一样的用法
    }
}

注意事项:1.不能用cin读入字符串,应为可能为读入样例中的"",故只能用getchar()一个一个字符的读入.

                2.应为判断a是否为空字符串,应为空字符串也可以插入到set中,会导致presentation error.

                3.dict.count()返回集合dict中某个值元素的个数,不存在就返回0,存在返回1.因此可利用这个性质来判重.

                4.迭代器遍历集合,迭代器的用法和指针差不多.

紫书—关于例题5-3安迪的第一个字典的思考

原文:https://www.cnblogs.com/acmerhome/p/14749685.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!