zoukankan      html  css  js  c++  java
  • 【UVA】12504 Updating a Dictionary(STL)

    题目

    题目
     


    分析

    第一次用stringstream,真TMD的好用
     


    代码

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int n;
    	cin>>n;
    	getchar();//回车
    	while(n--)
    	{
    		string s1,s2;
    		getline(cin,s1);
    		getline(cin,s2);
    		for(int i=0;i<s1.length();i++)
    			if(!isalpha(s1[i]) && !isdigit(s1[i])) s1[i]=' ';
    		for(int i=0;i<s2.length();i++)
    			if(!isalpha(s2[i]) && !isdigit(s2[i])) s2[i]=' '; 
    		int l1=0,l2=0;
    		map<string,string> m;
    		map<string,string>::iterator it;
    		vector<string> c,d,e;
    		stringstream ss(s1),ss2(s2);
    		string a,b;
    		while(ss>>a)
    		{
    			ss>>b; m[a]=b; l1++;
    		}
    		while(ss2>>a)
    		{
    			ss2>>b; l2++;
    			if(!m.count(a)) c.push_back(a);
    			else if(m[a]!=b) d.push_back(a);
    			if(m.count(a))
    			{
    				it=m.find(a);
    				m.erase(it);
    			}
    		}
    		sort(d.begin(),d.end());
    		sort(c.begin(),c.end());
    		if(c.size())
    		{
    			cout<<"+";
    			for(int i=0;i<c.size();i++)
    			{
    				cout<<c[i];
    				if(i==c.size()-1) cout<<endl;
    				else cout<<",";
    			}
    		}
    		if(m.size())
    		{
    			cout<<"-";
    			for(map<string,string>::iterator i=m.begin();i!=m.end();i++)
    			{
    				if(i!=m.begin()) cout<<',';
    				cout<<i->first;
    			}
    			cout<<endl;
    		}
    		if(d.size())
    		{
    			cout<<"*";
    			for(int i=0;i<d.size();i++)
    			{
    				cout<<d[i];
    				if(i==d.size()-1) cout<<endl;
    				else cout<<',';
    			}
    		}
    		if(!c.size()&&!d.size()&&!m.size()) puts("No changes");
    		cout<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    Hall定理
    c#汉字转为拼音
    asp.net导出Excel 按照预定格式,以及解决导出乱码
    asp.net导出Excel
    SQL正常工作日上班安排
    SQL做日历
    T-SQL数组循环
    存储过程删除 用于更改,
    数组操作-去除重复和空白元素
    TreeView递归取值
  • 原文地址:https://www.cnblogs.com/noblex/p/7905614.html
Copyright © 2011-2022 走看看