题解 | #字符串合并处理#C++使用Map容器来转换字符

字符串合并处理

https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f

#include <string>
#include <iostream>
#include <algorithm>
#include <cctype>
#include <map>
using namespace std;

int main()
{
	map<char, char> p = {
		{'0','0'},{'1','8'},{'2','4'},{'3','C'},{'4','2'},{'5','A'},{'6','6'},{'7','E'}
		,{'8','1'},{'9','9'},{'a','5'},{'b','D'},{'c','3'},{'d','B'},{'e','7'},{'f','F'}
	};				//用于转换字符
  
	string str1, str2;
	while (cin >> str1 >> str2) {
		string temp = str1 + str2;		//合并
		str1.clear();					//分别存储偶数位与奇数位字符
		str2.clear();
		for (int i = 0; i < temp.size(); i++) {
			if (i % 2 == 0) {
				str1 += temp[i];
			}
			else {
				str2 += temp[i];
			}
		}

		sort(str1.begin(), str1.end());			//存储完直接调用sort函数,自动按ASCⅡ码排升序
		sort(str2.begin(), str2.end());

		for (int i = 0; i < str1.size(); i++) {
			if (p.find(tolower(str1[i])) != p.end())			//tolower函数用来将大写字母转化为小写,因为map容器中只列了小写字母的转换关系,
			//find函数用来查找是否存在转换关系的原字符
				str1[i] = p[tolower(str1[i])];					//使用map容器转换
		}
		for (int i = 0; i < str2.size(); i++) {
			if (p.find(tolower(str2[i])) != p.end())
				str2[i] = p[tolower(str2[i])];					//同上理
		}
	  
		int x = 0, y = 0;
		for (int i = 0; i < temp.size(); i++) {
			if (i % 2 == 0) {
				cout<<str1[x++];						//按原有奇偶顺序来输出
			}
			else {
				cout<<str2[y++];
			}
		}
	}
	return 0;
}

全部评论

相关推荐

找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务