UVA 10815 Andy's First Dictionary【cctype函数+set基本用法】_set函数isalpha-程序员宅基地

技术标签: STL  acm  stl  

source:

点击打开链接


题意:给你一段英语文字,按字典序输出文字中出现的单词,要求不重复(不区分大小写),且全部用小写输出。

思路:由于STL中的set自动有去重功能,可以直接用set存储。而关于字符类的操作,在cctype头文件中有一些很有用的函数可以使用。


首先:set的基本用法

头文件:#include<set>  //注意,STL头文件没有扩展名.h

声明:set<string> s;  

      (也可以声明成自己定义的结构体类型)

基本操作:

  • s.clear() 移除容器中所有数据 注意:用于初始化,一定不能忘记清零操作
  • s.empty() mapStudent为空时返回true
  • s.insert(x) 将x加入set(注意不会重复插入,重复插入时第二次插入无效)
  • s.erase(x) 将x从set中删除(如果x存在)
  • s.size() 返回set中元素的个数
  • s.begin() 返回集合中第一个元素的iterator(set中元素默认是以从小到大的顺序排列的)
  • s.end() 返回集合中第最后那个元素的后一个iterator(注意[begin,end))
  • if (s.find(x) != s.end()) ...  用于判断x是否在set s 中
  • 另还有关于set的交并补函数,以及反向遍历函数(后面用到了再来填)


其次比较重要的是:cctype中的函数(关于字符的有用函数)

头文件:#include<cctype>  //c++用cctype c语言是ctype.h

基本操作:

  • isalnum()  是否是字母数字,即字母或数字,该函数返回true
  • isalpha()  是否是字母
  • isblank()  是否是空格或水平制表符
  • iscntrl()  是否是控制字符
  • isdigit()  是否数字
  • islower()  是否是小写字母
  • isupper()  是否是大写字母
  • ispunct()  是否是标点符号
  • isspace()  是标准空白字符,如空格、进纸、换行符、回车、水平制表符或者垂直制表符
  • tolower(a) 转化为小写字母 
  • toupper(a) 转化为小写字母

另外本题注意:不要用scanf(“%s”,s)读入,因为单词不一定是由空格隔开的,根据题意应一行一行读进来,也就是:fgets(a,MAXN,stdin)

代码如下:

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cctype>
#include<set>
#include<string.h>
using namespace std;

set<string> s;

int main()
{
    char a[5000];
    char b[220];
    int len,j;
    s.clear();
    while(fgets(a,5000,stdin))
    {
        len=strlen(a);
        for(int i=0;i<len;i++)
        {
            j=0;
            if(!isalpha(a[i])) continue;
            while(isalpha(a[i]))  //判断是否为字母  类似的函数还有isupper islower isdigit,头文件:cctype
                b[j++]=tolower(a[i++]);  //将字母转化成小写   类似的还有toupper
            b[j]='\0';
            if(j>0) s.insert(b);
        }

    }
    set<string> :: iterator it=s.begin();
    for(;it!=s.end();it++)
        cout<<*it<<endl;
    return 0;
}




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MartaYang/article/details/77113684

智能推荐

Python | 如何通过faker批量生成“逼真”的测试数据_faker 批量-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏6次。我们在项目中,常常需要使用一些假数据来做测试,比如客户名、电话号码、街道地址等等,平时我们基本是键盘一顿乱敲,或者随便造个什么字符串出来。现在你不用这样做了,用Faker就能满足你的一切需求。本文将结合实例,讲述Python 如何通过faker第三方库,批量伪造数据。包含两种保存方式:1,存入Excel;2,存入mysql数据库。本文框架结构为:1、faker简介2、faker使用3、常用方法一览4、实例:批量生成测试数据1、faker简介f..._faker 批量

6自由度机械臂MATLAB仿真KUKA KR6机器人仿真 simulink simscape 逆向运动学,正向运动学 非线性控制_六自由度机械臂matlab仿真-程序员宅基地

文章浏览阅读689次。6自由度机械臂MATLAB仿真KUKA KR6机器人仿真 simulink simscape 逆向运动学,正向运动学 非线性控制。_六自由度机械臂matlab仿真

洛谷 P1057 传球游戏-程序员宅基地

文章浏览阅读901次。动规(递推?)_p1057 传球游戏

(一)海思3519av100开发:linux环境搭建_hi3519av100环境-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏24次。1.引言参考文档: ReleaseDoc\zh\01.software\board\SVP\HiSVP 开发指南.pdf概念:NNIE(Neural Network Inference Engine)(神经网络推理机)其他概念和开发流程等等都省略,只为安装好对应的环境,和记录自己踩过的坑。、2.环境1.Ubuntu18.042.gcc4.8.5关于gcc的版本要多注意下,因为我最开始使用的是默认的版本,7.x的,在运行nnie_mapper_12时遇到了未定义符号问题,后续会讲到。3.下载和_hi3519av100环境

性能测试(硬件性能指标汇总)-程序员宅基地

文章浏览阅读675次。转载于:https://www.cnblogs.com/insane-Mr-Li/p/10683875.html_性能硬件资源指标

rand和randc有什么区别-程序员宅基地

文章浏览阅读3.9k次,点赞2次,收藏15次。文章目录前言一、rand和randc的区别总结前言在systemverilog中,随机变量可以通过两个关键字来进行修饰,rand和randc,本文大概介绍一下这两个关键字的区别。一、rand和randc的区别简单的说,rand是随机,randc是循环随机。rand相当于样本放回的随机采样,相邻两次可能相同。randc则是拿一个少一个,当每个可能的值都出现一遍后才会重复。例如:rand bit [1:0] a; // 1, 0, 0, 2, 3, 3, …randc bit [1:0]_randc

随便推点

服务器虚拟机还原,还原虚拟机_oVirt4.3免费开源服务器虚拟化视频教程(包含vProtect、超融合部署)_虚拟化视频-51CTO学堂...-程序员宅基地

文章浏览阅读333次。oVirt是一款免费开源虚拟化软件,是RedHat商业版本虚拟化软件RHEV的开源版本。oVirt基于kvm,并整合很多优秀的开源软件,oVirt的定位是替代vmware vsphere,oVirt目前已经成为了企业虚拟化环境可选的解决方案,它在企业私有云建设中具备部署和维护使用简单的优势。oVirt的功能包括:为管理员和普通用户提供了WEB门户;支持多数据中心、多集群管理;FC-SAN/IP-S..._ovirt 虚拟机 还原模式

前端性能优化,搞定面试_前端优化面试-程序员宅基地

文章浏览阅读419次。性能优化 串讲问题列表初始阶段 -> 加载优化首页加载慢的优化优化图片的做法实现 Webpack 打包优化实现 CDN 加速运行阶段 -> 渲染优化渲染十万条数据如何不造成卡顿学习目标 理解前端优化中两个分类 了解导致前端性能问题的根本原因 知道一些常用的性能问题的解决方案问题详解初始阶段1. 首页加载慢的优化#####问题分析首页加载图片过多首页的请求量过多首页请求的静态资源(HTML、CSS、JS、图片…)过大结论:所有加载慢的问题最_前端优化面试

NodeMedia / NodeMediaClient-Android(一个简单,快速,免费的直播SDK)_免费直播sdk-程序员宅基地

文章浏览阅读1.3w次,点赞2次,收藏2次。NodeMedia RTMP/RTMFP/RTSP/HTTP Play/Publish Client SDK for Android用Gradle导入allprojects { repositories { google() jcenter() maven { url 'https://jitpack.io' } }}..._免费直播sdk

CSS中如何去掉li标签前面的小圆点_<li>前面有圆点-程序员宅基地

文章浏览阅读1.4w次,点赞10次,收藏5次。CSS去掉li标签前面的小圆点ul li 代码示例<ul> <li>西瓜</li> <li>冬瓜</li> <li>南瓜</li> <li>北瓜</li> </ul>运行示例图:我们可以清楚地看到每个li前边都有一个小圆点如何利用css去除小圆点 只需一行代码 list-style: none;_前面有圆点

【Python基础】Logging日志模块 简单使用教程_python logging logger default_format-程序员宅基地

文章浏览阅读3.1k次。简单使用#!/usr/local/bin/python# -*- coding:utf-8 -*-import logginglogging.debug('debug message')logging.info('info message')logging.warn('warn message')logging.error('error message')logging.criti..._python logging logger default_format

mysql时长用什么类型_MySQL 中你应该使用什么数据类型表示时间?-程序员宅基地

文章浏览阅读1.4k次。当你需要保存日期时间数据时,一个问题来了:你应该使用 MySQL 中的什么类型?使用 MySQL 原生的 DATE 类型还是使用 INT 字段把日期和时间保存为一个纯数字呢?在这篇文章中,我将解释 MySQL 原生的方案,并给出一个最常用数据类型的对比表。我们也将对一些典型的查询做基准测试,然后得出在给定场景下应该使用什么数据类型的结论。原生的 MySQL Datetime 数据类型Datetim..._mysql存贮时长分钟数,用哪种类型合适