[华为OJ--C++]025-字符串合并处理
2017-02-25 09:04
459 查看
题目描述: 按照指定规则对输入的字符串进行处理。
详细描述:
将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排训后的字符串进行操作,如果字符为‘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”
输入描述:输入两个字符串
输出描述:输出转化后的结果
输入例子:dec fab
输出例子:5D37BF
算法实现:
详细描述:
将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排训后的字符串进行操作,如果字符为‘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”
输入描述:输入两个字符串
输出描述:输出转化后的结果
输入例子:dec fab
输出例子:5D37BF
算法实现:
#include<iostream> #include<string> #include<vector> using namespace std; //************************************************ // * Author: 赵志乾 // * Date: 2017-2-25 // * Declaration: All Rigths Reserved !!! //***********************************************/ int IsHex(char c); char inttoHex(int ret,char c); void mysort(string&ret,int start); void mycode(string&ret); int main() { string str1,str2; cin>>str1>>str2; string tmp=str1+str2; mysort(tmp,0); mysort(tmp,1); mycode(tmp); cout<<tmp<<endl; return 0; } int IsHex(char c) { int ret; if(c>='0'&&c<='9') return c-'0'; if(c>='a'&&c<='f') return c-'a'+10; if(c>='A'&&c<='F') return c-'A'+10; return 16; } char inttoHex(int ret,char c) { if(ret>=0&&ret<=9) return ret+'0'; else return ret-10+'A'; } void mysort(string&ret,int start) { for(int i=start;i<ret.length();i=i+2) { int index=i; for(int j=i+2;j<ret.length();j+=2) { index=ret[index]<ret[j]?index:j; } char c=ret[index]; ret[index]=ret[i]; ret[i]=c; } } void mycode(string&ret) { for(int i=0;i<ret.length();i++) { int hex=IsHex(ret[i]),codehex=0; if(hex!=16) { codehex=(hex&1)*8+(hex>>1&1)*4+(hex>> aadf 2&1)*2+(hex>>3&1); ret[i]=inttoHex(codehex,ret[i]); } } }
相关文章推荐
- 【华为OJ】【025-字符串合并处理】
- 华为OJ 中级 字符串合并处理
- 华为OJ——字符串合并处理
- 华为OJ:字符串合并处理
- 华为OJ——字符串合并处理
- 华为oj中级 字符串合并处理
- 华为OJ(字符串合并处理)
- 华为OJ中级题-字符串合并处理
- 华为oj 字符串合并处理
- 华为OJ_2126_字符串合并处理
- 华为OJ——字符串合并处理
- 华为OJ:字符串合并处理
- 华为oj字符串合并处理
- 【华为 OJ 】 字符串合并处理
- 【华为机试】字符串合并处理
- 华为机试——字符串合并处理
- 字符串合并并处理(C++实现)
- [华为OJ--C++]088-按字节截取字符串
- [华为OJ--C++]023-字符串加解密
- [华为OJ--C++]082-字符串通配符