字符串合并处理
来源:互联网 发布:java发牌器 编辑:程序博客网 时间:2024/05/02 00:45
题目
描述
按照指定规则对输入的字符串进行处理。
详细描述:
将输入的两个字符串合并。
对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。
对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘4’,为0100b,则翻转后为0010b,也就是2。转换后的字符为‘2’; 如字符为‘7’,为0111b,则翻转后为1110b,也就是e。转换后的字符为大写‘E’。
举例:输入str1为”dec”,str2为”fab”,合并为“decfab”,分别对“dca”和“efb”进行排序,排序后为“abcedf”,转换后为“5D37BF”
接口设计及说明:
/*
功能:字符串处理
输入:两个字符串,需要异常处理
输出:合并处理后的字符串,具体要求参考文档
返回:无
*/
void ProcessString(char* str1,char str2,char strOutput)
{
}
输入
输入两个字符串
输出
输出转化后的结果
样例输入
dec fab
样例输出
5D37BF
思路
下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。
哎。。。注意看要求
代码
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;int charToInt(char ch){ if(ch>='0'&&ch<='9') { return ch-'0'; } else if(ch>='a'&&ch<='f') { return ch-'a'+10; } else if(ch>='A'&&ch<='F') { return ch-'A'+10; } return ch;}char binTiHex(int i){ if(i<10&&i>=0) { return static_cast<char>(i+'0'); } else { i-=10; } return static_cast<char>(i+'A');}char ProcessChar(char ch){ int first=1;//0001B int last=0; int temp = charToInt(ch); int result = 0; if(temp<=15) { for(int i=0; i<4; ++i) { last = first&temp; result = result|last; temp=temp>>1; if(i<3) { result=result<<1; } } return binTiHex(result); } return ch; //int result = ((temp&firstTwo)>>2)|((temp&lastTwo)<<2);}int main(){ string str1,str2,str; vector<char> vec1,vec2; cin>>str1>>str2; str=str1+str2; for(int i=0; i<str.size(); i+=2) //拆分加排序 { char temp=str[i]; vec1.push_back(temp); } for(int i=1; i<str.size(); i+=2) { char temp=str[i]; vec2.push_back(temp); } sort(vec1.begin(),vec1.end()); sort(vec2.begin(),vec2.end()); for(int i=0; i<vec1.size(); i++) //再合并 { int j=i*2; str[j]=vec1[i]; } for(int i=0; i<vec2.size(); i++) { int j=i*2+1; str[j]=vec2[i]; } for(int i=0; i<str.size(); ++i) { cout<<ProcessChar(str[i]); } cout<<endl; return 0;}
也可以用switch对每种情况进行划定来提高运算速度
if((s>='0'&&s<='9')) { switch (s) { case '0': s='0'; break; case '1': s='8'; break; case '2': s='4'; break; case '3': s='C'; break; case '4': s='2'; break; case '5': s='A'; break; case '6': s='6'; break; case '7': s='E'; break; case '8': s='1'; break; case '9': s='9'; break; default: break; } } else if((s>='a'&&s<='f')||(s>='A'&&s<='F')) { switch (s) { case 'a': case 'A': s='5'; break; case 'b': case 'B': s='D'; break; case 'c': case 'C': s='3'; break; case 'd': case 'D': s='B'; break; case 'e': case 'E': s='7'; break; case 'f': case 'F': s='F'; break; default: break; } }
0 0
- 字符串合并处理
- 字符串合并处理
- 字符串合并处理
- 字符串合并并处理
- 字符串合并处理 (中级)
- 字符串合并处理
- OJ-----字符串合并处理
- 字符串合并处理
- 字符串合并处理
- 字符串合并处理
- 字符串合并处理
- 各种字符串合并处理示例.
- 华为OJ_2126_字符串合并处理
- 华为oj 字符串合并处理
- 华为oj字符串合并处理
- 【华为 OJ 】 字符串合并处理
- [编程题]字符串合并处理
- 华为OJ:字符串合并处理
- 我希望进入大学时就能知道的一些事儿
- windbg的k命令
- 全要素分析与问题解决:以人为本,主次分明
- ionic2 NodeJs npm 安装
- <Python核心编程(第二版)>第六章练习题
- 字符串合并处理
- 并发编程实战学习笔记(五)——取消与关闭
- 如何在网页中嵌入商务通对话框
- SPOJ-HJB Segmentation(RMQ+BIT)
- 旅行商问题(状态压缩dp)
- HTTP协议详解
- 矩形面积交
- CF
- 音视频播放小略