zoukankan      html  css  js  c++  java
  • UVA 156:Ananagrams (vector+map+sort)

    题意:一大堆单词中间有空格隔开,以‘#’结束输出,问只出现一次的的单词有哪些(如果两个具有相同的长度,相同的字母也算是相同的,不区分大小写,如:noel和lone属于一个单词出现两次)。最后按照字典序输出那些只出现一次的单词

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <math.h>
    #include <limits.h>
    #include <map>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <set>
    #include <string>
    #define ll long long
    #define ms(a) memset(a,0,sizeof(a))
    #define pi acos(-1.0)
    #define INF 0x3f3f3f3f
    const double E=exp(1);
    const int maxn=1e6+10;
    using namespace std;
    vector<string> v;
    map<string,int> mmp;
    //将字符串转换成小写,并将该字符串中的字符按字典序排序
    string change(string a)
    {
    	for(int i=0;i<a.length();i++)
    		a[i]=tolower(a[i]);
    	sort(a.begin(),a.end());
    	return a;
    }
    int main(int argc, char const *argv[])
    {
    	ios::sync_with_stdio(false);
    	string ch;
    	while(cin>>ch&&ch[0]!='#')
    	{
    		//单词存入v
    		v.push_back(ch);
    		//将单词转化一下,用map标记
    		string word=change(ch);
    		mmp[word]++;
    	}
    	vector<string>ans;
    	for(int i=0;i<v.size();i++)
    	{
    		//如果单词出现一次,将该单词加入ans中
    		if(mmp[change(v[i])]==1)
    			ans.push_back(v[i]);
    	}
    	//字典序排序
    	sort(ans.begin(),ans.end());
    	for(int i=0;i<ans.size();i++)
    		cout<<ans[i]<<endl;
    	return 0;
    }
    
  • 相关阅读:
    Apache部署Django项目
    Docker
    常用算法
    Go之基本数据类型
    Go之流程控制
    Go基本使用
    Go安装与Goland破解永久版
    Linux
    详解java中的byte类型
    Linux统计文本中某个字符串出现的次数
  • 原文地址:https://www.cnblogs.com/Friends-A/p/10324450.html
Copyright © 2011-2022 走看看