set+Andy's First Dictionary

set容器的初级题目——set对字符串进行排序
题目链接
在看我下面分享的题解之前,建议大家先自己整理一下自己关于这道题的思路
(由于题目太长,不粘贴题目了)
题目大意:(从数据的输入和输出的方向考虑)
输入:输入一篇文章,文章有一下特点:
1,由单词,空格,和各种符号组成,其中有大些字母,也有小写字母
2,文章不超过2000行,没一行不超过200个单词,文章最后以EOF结束

输出:输出在这篇文章中出现的单词,要求每行一个,单词有一下特点
1,按照字典序排序,且不可重复;
2,输出的单词中只有小写字母,即若文章中出现Apple 和 apple 视为一个单词

注:先分享代码,在代码中有解释,代码后有涉及到的其它知识点的简单理解

#include<iostream>
#include<set>
#include<cstdio>
#include<string>
#include<sstream>
using namespace std;
int main()
{
    set<string>s;//生成一个set容器,用来存储单词
    string str,temp;
    int i;
    while(cin>>str)//按行输入数据,这里认为,对于一个单词来说,不会有一个单词在两行的情况
    {
        for(i=0;i<str.length();i++)//str.length(),判段长度的函数
        {
            if(isalpha(str[i])) str[i]=tolower(str[i]);//将大写字母转化为小写字母
            else str[i]=' ';//将非字母的字符转化为空格,为下面做准备;
        }
        istringstream STR(str);//将一串字符中可以形成单词的组合筛选出来
        while(STR >> temp)
            s.insert(temp);//将单词插入,set容器中去;
    }
    set<string>::iterator ite;//遍历,将所有单词输出
    for(ite=s.begin();ite!=s.end();ite++)
    {
        cout<<*ite<<"\n";//注意换行
    }
    return 0;
}
在题目中用到的函数:
1,
string s;
 s.length( );
所含字符的数目
2,
char c;
isalpha(c)
判断字符c是否是字母,如果是字母,返回1,否则放回0
3,char 	A,a;
scanf("%c",&A);
a=tolower(A);
将大写字母转化为小写字母,并返回小写字母;
4,
char A,a;
scanf("%c",&a);
A=toupper(a);
将小写字母转化为大写字母,并返回小写字母;

代码中出现的一个重要的知识点:“将小写字母转化为大些字母,并反回大写字母;”
这里不做阐述,

istringstream的一些解释

题目总结:
一,使用到的知识点:
1,set容器对单词排序的能力;
2,istringstrem从文章中筛选出单词的能力
3,对字符处理的一些特殊函数,isalpha(),tolower(),toupper();

二,解题的思路:将一段文章中的单词中出现的大些字母转化为小写字母,
从一段文章中将单词筛选出来,将单词插入set容器中进行排序,输出set容器内的东西。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值