华为oj 字符串合并处理
2015-09-15 20:46
295 查看
#include <iostream> #include <string> #include <cstring> #include <algorithm> #include <map> using namespace std; const int MAX_N=100000; int change[] = { 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 }; int main(){ map<char,char> m; for(int i=0;i<16;i++) if(i<10) m[i+'0']=(change[i]>9?change[i]-10+'A':change[i]+'0'); else m[i-10+'a']=(change[i]>9?change[i]-10+'A':change[i]+'0'), m[i-10+'A']=(change[i]>9?change[i]-10+'A':change[i]+'0'); string str1, str2; cin >> str1 >> str2; string str = str1 + str2; string::size_type i = 0, j = 0, k = 0, _size = str.size(); str1.resize((_size + 1) / 2); str2.resize(_size / 2); for (i = 0; i<_size; i++) if (i & 1) str2[k++] = str[i]; else str1[j++] = str[i]; sort(str1.begin(), str1.end()); sort(str2.begin(), str2.end()); for (j = 0; j<(_size + 1) / 2; j++){ map<char,char>::iterator iter=m.find(str1[j]); if(iter!=m.end()) str[2*j]=m[str1[j]]; else str[2*j]=str1[j]; } for (j = 0; j<_size / 2; j++){ map<char,char>::iterator iter=m.find(str2[j]); if(iter!=m.end()) str[2*j+1]=m[str2[j]]; else str[2*j+1]=str2[j]; } cout << str << endl; return 0; }
相关文章推荐
- 常用函数[不断添加]
- A. Multiplication Table
- Qt Creator设置窗口布局
- tomcat和java ee的安装和配置!
- MT6735系列及MT6753系列多合一驱动编译手册(一)
- VmWare下扩展虚拟机内系统centos6.6的硬盘分区空间(图文讲解)
- BZOJ 1127 [POI2008]KUP 最大子矩阵
- Xcode6 - 更改项目Copyright
- 原根
- UI03_UITextField
- c++11实现optional
- java 小小问题
- 集合(Collection集合)由来
- HDU 3555 Bomb (数位dp)
- c#Dictionary键值对的使用
- hdu5437Alisha’s Party set模拟
- 自定义Toast
- c#Dictionary键值对的使用
- 成为腾讯开发者——如何使用QQ开放平台和微信开放平台
- A+B for Input-Output Practice (IV)