uva10815安迪的第一个字典

背景:这种题,我只能说,原谅我是新手,一点不会,于是又只有照着书上打出来。

学习:c++里面set的一些基本用法。还有isalpha()函数和tolower()函数,isalpha()函数相当于isupper()||islower()的作用,为判断一个字符是否为英文字符,tolower()为将一个字符转变成小写字符,与之相反的为tosupper()函数。代码中的set<string>::iterator中的iterator是迭代器的意思,是STL中的重要概炼,类似于指针。

注:set和stringstream的学习可以参照我转载的两篇文章,在c++分类里面。

#include <iostream>
#include <string>
#include <set>
#include <sstream>
using namespace std;
set<string> dict;
int main()
{
    string s,buf;
    while(cin>>s)//C++输入流如果遇见eof会返回false,cin遇到空格,TAB,回车都结束读取,并且回车符被消耗。
    {
        for(int i=0;i<s.length();i++)
        {
            if(isalpha(s[i])) s[i]=tolower(s[i]);
            else s[i]=' ';//将标点符号转换为空格,作为单词的分界点。
        }
        stringstream ss(s);
        while(ss>>buf) dict.insert(buf);//从流里导出标准的string类,加入集合中,集合会自动取消重复,并升序排列
    }
    for(set<string>::iterator it=dict.begin();it!=dict.end();++it)
        cout << *it<< endl;//输出集合中的每个元素
    return 0;
}
时间: 2024-10-12 22:18:29

uva10815安迪的第一个字典的相关文章

安迪的第一个字典 (Andy&#39;s First Dictionary,UVa10815)

题目描述: #include<iostream> #include<string> #include<set> #include<sstream> using namespace std; set<string> dic; string s, buf; int main() { while(cin >> s) { for(int i = 0; i < s.length(); i++) if(isalpha(s[i])) s[i]

安迪的第一个字典 Andy&#39;s First Dictionary, UVa 10815

(Time limit: 3 seconds) Andy, 8, has a dream - he wants to produce hisvery own dictionary. This is not an easy task forhim, as the number of words that he knows is,well, not quite enough. Instead of thinking up allthe words himself, he has a briliant

UVa 10815 安迪的第一个字典

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1756 题意:很简单,把输入的文本,排序按字典序输出,相当于制作字典. 主要是set和stringstream的运用. 对于stringstream有个简单的程序. #include<iostream> #include<sstream> using namespac

stl的集合set——安迪的第一个字典(摘)

set就是数学上的集合——每个元素最多只出现一次,和sort一样,自定义类型也可以构造set,但同样必须定义“小于”运算符 (ps:multiset是允许有重复数据的集合) set不支持随机访问,必须要使用迭代器去访问. begin() 返回指向第一个元素的迭代器clear() 清除所有元素count() 返回某个值元素的个数empty() 如果集合为空,返回true(真)end() 返回指向最后一个元素之后的迭代器,不是最后一个元素erase() 删除集合中的元素find() 返回一个指向被查

UVa-10815 安迪的第一个词典

字符函数库中常用的函数 函数名称 返回值 isalnum() 如果参数是字母数字,即字母或数字,该函数返回true isalpha() 如果参数是字母,该函数返回真 isblank() 如果参数是空格或水平制表符,该函数返回true iscntrl() 如果参数是控制字符,该函数返回true isdigit() 如果参数是数字(0-9),该函数返回true isgraph() 如果参数是除空格之外的打印字符,该函数返回true islower() 如果参数是小写字母,该函数返回true ispr

我的第一个字典-Dictionary

我的OC学习阶段中 我的第一个字典创建 /* NSDictionary *dic = [NSDictionary dictionaryWithObject:@"xiaochen" forKey:@"name"] ; NSLog(@"%@", dic); */ 虽然说我不是专业学习软件编程的,但是我很喜欢编程.真不知道自己填写志愿的时候为什么会选择通信, 大学上的有点伤心了, 没有姿色 也没有肉, 一点也不性感. 我要努力学习编程, 成为我想做的那

紫書-第五章-例題

衹爲總結,不爲其他,敲過代碼,但也可能會遺忘,權當加深印象了: 5-1 大理石在哪裏(UVa 10474) 很容易的題目,sort+lower_bound,不過自己對lower_bound還是用的很少,欸,所以還是不太敢用的= =: #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int m

C++ STL set(集合)

引入: 集合和映射也是两个常用的容器.set就是数学上的集合--每个元素最多只出现一次.和sort一样,自定义类型也可以构造set,但同样必须定义"小于"运算符. 头文件: #include<set>(当然,如果愿意,你也可以用#include<bits/stdc++.h>这个万能库,但是会导致内存巨大... 声明: set<int > s;//普通的定义(不允许元素重复) struct rec{...};set<rec > s;//结构

Dictionary Learning(字典学习、稀疏表示以及其他)

第一部分 字典学习以及稀疏表示的概要 字典学习(Dictionary Learning)和稀疏表示(Sparse Representation)在学术界的正式称谓应该是稀疏字典学习(Sparse Dictionary Learning).该算法理论包含两个阶段:字典构建阶段(Dictionary Generate)和利用字典(稀疏的)表示样本阶段(Sparse coding with a precomputed dictionary).这两个阶段(如下图)的每个阶段都有许多不同算法可供选择,每种