UVA156 反片语 Ananagrams

简介: UVA156 反片语 Ananagrams

题意翻译

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

输入样例

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


代码

#include<iostream>
#include<vector>
#include<map>
#include<string>
#include<algorithm>
using namespace std;
/*
题目思路
1.使用vector v1存储单词,以便后期使用
2.写一个函数:可以将单词变成小写,有序
3.使用map集合统计每个单词(函数处理后)的个数.
4.遍历vector v1如果  在map中出现的次数为1那么就找到啦满足题意的单词,再加到新的vector  v2中;
5.对v2进行排序,然后输出即可.
*/
string s;
vector<string> v1, v2;
map<string, int> m;
string low_sort(string s1) {
  for (int i = 0; i < s1.size(); i++) {
    s1[i] = tolower(s1[i]);
  }
  sort(s1.begin(), s1.end());
  return s1;
}
int main() {
  while (cin >> s && s[0] != '#') {
    v1.push_back(s);
    if (!m.count(low_sort(s))) {
      m[low_sort(s)] = 1;
    }
    else {
      m[low_sort(s)]++;
    }
  }
  for (int i = 0; i < v1.size(); i++) {
    if (m[low_sort(v1[i])] == 1) {
      v2.push_back(v1[i]);
    }
  }
  sort(v2.begin(), v2.end());
  for (int i = 0; i < v2.size(); i++) {
    cout << v2[i] << endl;
  }
  return 0;
}
相关文章
|
9月前
Uva10001 Garden of Eden
Uva10001 Garden of Eden
32 0
|
9月前
uva10038 Jolly Jumpers
uva10038 Jolly Jumpers
23 0
|
9月前
uva10112 Myacm Triangles
uva10112 Myacm Triangles
25 0
概率dp - UVA 11021 Tribles
Tribles  Problem's Link:  http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059   Mean:  有k个细菌,每个细菌只能存活一天,在死去之前可能会分裂出0,1,2....n-1个细菌,对应的概率为p0,p1,p2....pn-1。
799 0
|
算法
UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494...
1537 0
uva 10273 Eat or Not to Eat?
点击打开链接uva 10273 思路: 暴力求解 分析: 1 题目要求没有吃掉的奶牛的个数已经最后一次吃掉奶牛的天数 2 没有其它的方法只能暴力,对于n头牛的n个周期求最小公倍数,然后在2个公倍数之内暴力求解 代码: #inclu...
788 0
|
C++
uva 11136 Hoax or what
点击打开链接uva 11136 思路: STL 分析: 1 题目意思比较不好理解,理解了题目之后我们可以利用STL的multiset来做 2 每次找到最大和最小的值,然后求解即可 代码: #include #include #in...
826 0
uva 1160 X-Plosives
点击打开链接uva 1160 思路: 并查集 分析: 1 看懂题目之和就是切菜了 代码: #include #include #include #include using namespace std; const int MAXN...
749 0
uva 1203 Argus
点击打开链接uva 1203 思路: 优先队列 分析: 1 题目要求前k个事件的编号,我们利用优先队列来维护即可 2 优先队列保存的是一个struct,因此我们需要重载 s.
1279 0