UVA 156 反片语

UVA 156 反片语

题目描述

输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文 本中的另外一个单词。在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中 的大小写,按字典序进行排列(有大写字母在所有小写字母的前面)。

样例输入

ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Rides dealer NotE derail LaCeS drIed noel dire Disk mace Rob dries #

样例输出

Disk NotE derail drIed eye ladder soon(为节约空间不予以换行)


知识补充:C++ map

  1. map<sort1,sort2> map_name 可以称之为关联数组 sort1->sort2 的映射

  2. 常用方法insert find count remove


//insert

student.insert(pair<int,string>(1,'female')); //利用pair变量删除

mapStudent[1] = "student_one"; //利用下标删除

mapStudent.insert(map<int, string>::value_type (1, "student_one")); //利用insert函数

//erase

iterator erase(iterator it);//通过一个条目对象删除

iterator erase(iterator first,iterator last)//删除一个范围

size_type erase(const Key&key);//通过关键字删除

//size

n = mapStudent.size();

  1. 函数列表

begin()        返回指向map头部的迭代器



clear()        删除所有元素



count()        返回指定元素出现的次数



empty()        如果map为空则返回true



end()          返回指向map末尾的迭代器



equal_range()  返回特殊条目的迭代器对



erase()        删除一个元素



find()          查找一个元素



get_allocator() 返回map的配置器



insert()        插入元素



key_comp()      返回比较元素key的函数



lower_bound()  返回键值>=给定元素的第一个位置



max_size()      返回可以容纳的最大元素个数



rbegin()        返回一个指向map尾部的逆向迭代器



rend()          返回一个指向map头部的逆向迭代器



size()          返回map中元素的个数



swap()          交换两个map



upper_bound()    返回键值>给定元素的第一个位置



value_comp()    返回比较元素value的函数


代码实现


//摘自刘汝佳

#include<algorithem>

#include<string>

#include<vector>

#include<map>

#include<cctype>

#include<iostream>

using namespace std;

map<int,string> cnt;

vector<string> words;

string re(const string &s){

string ans s;

for(i=0;i<ans.length();i++)

ans[i]=tolower(ans[i]);

sort(ans.begin(),ans.end());

return ans;

}

int main(){

int i,n;

while(cin>>s){

if(s[0]=='#')

break;

words.push_back(s);

string r=re(s);

if(!cnt.count(r))

cnt[r]=0;

cnt[r]++;

}

vector<string> ans;

for(i=0;i<words.size();i++){

if(cnt[re(words[i])]==1)

ans.push_back(re(words[i]));

sort(ans.begin(),ans.end());

for(i=0;i<ans.size();i++)

cout<<ans[i]<<"/n";

}

return 0;

}

by制杖菜鸡

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容