首页 > 招商银行信用卡中心10.10笔试
头像
姜汁
编辑于 2020-10-10 21:20
+ 关注

招商银行信用卡中心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;

}


全部评论

(7) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐