招商银行信用卡中心10.10笔试
想请问大家第二题编程怎么做的,我自己觉得没问题了,但是一直无法通过orz
代码如下
#include <iostream> #include <string> #include <vector> #include <unordered_map> #include <set> using namespace std; int ChangeString(string& a, string& b, int n){ int res = 0; for(int i=0; i<n; i++){ if(b[i]<a[i]) return -1; } if(a==b) return 0; unordered_map<char, vector<int> > bmp; for(int i=0; i<n; i++){ bmp[b[i]].push_back(i); } for(auto it=bmp.begin(); it!=bmp.end(); it++){ char ch = it->first; int size = bmp[ch].size(); int idx = bmp[ch][0]; int ans = 0; set<char> temp; if(a[idx]!=ch){ ans = 1; temp.insert(a[idx]); } for(int j=1; j<size; j++){ idx = bmp[ch][j]; if(a[idx]!=ch && temp.find(a[idx])==temp.end()){ ans++; temp.insert(a[idx]); } } res += ans; } return res; } int main(){ //freopen("input.txt", "r", stdin); int T; cin >> T; while(T--){ int n; cin >> n; string a; string b; cin >> a >> b; int res = ChangeString(a, b, n); cout << res << endl; } return 0; }