• Uva



    全是字符串相关处理,截取长度等相关操作的练习

    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <stack>
    #include <queue>
    
    using namespace std;
    
    int main()
    {
    	ios::sync_with_stdio(false);
    	int T;
    	cin >> T;
    	while (T--) {
    		map<string, string> ma;
    		string dictOld, dictNew;
    		string ad[102], del[102], cha[102];
    		// 分别存储增加的,减少的,变化的关键字
    		cin >> dictOld >> dictNew;
    		int addCount = 0;
    		int deleteCount = 0;
    		int changeCount = 0;
    
    		int a = 0;
    		while (dictOld.find(',', a + 1) < dictOld.size()) {
    			// 这里截取方法比较重要
    			string s(dictOld, a + 1, dictOld.find(',', a + 1) - a - 1);
    			string kay(s, 0, s.find(':', 0));
    			string value(s, s.find(':', 0) + 1, s.size() - s.find(':', 0));
    			ma.insert(pair<string, string>(kay, value));
    			a = dictOld.find(',', a + 1);
    		}
    		string s(dictOld, a + 1, dictOld.find('}', a + 1) - a - 1);
    
    		string kay(s, 0, s.find(':', 0));
    		string value(s, s.find(':', 0) + 1, s.size() - s.find(':', 0));
    
    		if (kay.size()) {
    			ma.insert(pair<string, string>(kay, value));
    		}
    
    		a = 0;
    		while (dictNew.find(',', a + 1) < dictNew.size()) {
    			string s(dictNew, a + 1, dictNew.find(',', a + 1) - a - 1);
    			string key(s, 0, s.find(':', 0));
    			string value(s, s.find(':', 0) + 1, s.size() - s.find(':', 0));
    
    			if (ma.find(key) == ma.end()) {
    				ad[addCount++] = key;
    			}
    			else {
    				string temp = ma.find(key)->second;
    				if (temp != value) {
    					cha[changeCount++] = key;
    				}
    				ma.erase(key);
    			}
    			a = dictNew.find(',', a + 1);
    		}
    
    		string s1(dictNew, a + 1, dictNew.find('}', a + 1) - a - 1);
    		string key1(s1, 0, s1.find(':', 0));
    		string value1(s1, s1.find(':', 0) + 1, s1.size() - s1.find(':', 0));
    
    		if (key1.size()) {
    			if (ma.find(key1) == ma.end()) {
    				ad[addCount++] = key1;
    			}
    			else {
    				string temp = ma.find(key1)->second;
    				if (temp != value1) {
    					cha[changeCount++] = key1;
    				}
    				ma.erase(key1);
    			}
    		}
    
    		while (ma.begin() != ma.end()) {
    			string temp = ma.begin()->first;
    			del[deleteCount++] = temp;
    			ma.erase(temp);
    		}
    
    		if (addCount == 0 &&
    			deleteCount == 0 &&
    			changeCount == 0) {
    			cout << "No changes
    ";
    		}
    		else {
    			if (addCount) {
    				sort(ad, ad + addCount);
    				cout << "+";
    				for (int i = 0; i < addCount; i++) {
    					if (i) {
    						cout << ",";
    					}
    					cout << ad[i];
    				}
    				cout << endl;
    			}
    			if (deleteCount) {
    				sort(del, del + deleteCount);
    				cout << "-";
    				for (int i = 0; i < deleteCount; i++) {
    					if (i) {
    						cout << ",";
    					}
    					cout << del[i];
    				}
    				cout << endl;
    			}
    			if (changeCount) {
    				sort(cha, cha + changeCount);
    				cout << "*";
    				for (int i = 0; i < changeCount; i++) {
    					if (i) {
    						cout << ",";
    					}
    					cout << cha[i];
    				}
    				cout << endl;
    			}
    		}
    		cout << endl;
    	}
    
    	return 0;
    }


  • 相关阅读:
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
  • 原文地址:https://www.cnblogs.com/zhangyaoqi/p/4591583.html
Copyright © 2020-2023  润新知