华为OJ(字符串合并处理)
2015-08-25 18:17
435 查看
描述 | 按照指定规则对输入的字符串进行处理。 详细描述:将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排训后的字符串进行操作,如果字符为‘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){} |
---|---|
知识点 | 字符串,排序,位运算 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入两个字符串 |
输出 | 输出转化后的结果 |
样例输入 | dec fab |
样例输出 | 5D37BF |
容易出错的是:题目只是对0-9 a-f或A-F之间的字符进行转换,对于比如:i j k等字符只是排序就够了。
<pre name="code" class="cpp">#include<iostream> #include<string> using namespace std; void str_sort(string& s)//奇数小标排序,偶数排序 { int len=s.size(); char temp; for(int i=0;i<len;i=i+2) for(int j=i+2;j<len;j+=2) { if(s[i]>s[j]) { temp=s[i]; s[i]=s[j]; s[j]=temp; } } for(int i=1;i<len;i=i+2) for(int j=i+2;j<len;j+=2) { if(s[i]>s[j]) { temp=s[i]; s[i]=s[j]; s[j]=temp; } } } void ProStr(string& s) { int tmp,tran; char c; int flag; for(int i=0;i<s.size();i++) { flag=0; if(isdigit(s[i])) { tmp=s[i]-'0'; flag=1; } else if(s[i]>='a'&&s[i]<='f'||s[i]>='A'&&s[i]<='F') { c=toupper(s[i]); tmp=c-'A'+10; flag=1; } if(flag) { tran=0; int bitest=0x01; bitest=bitest<<3; for(int j=0;j<4;j++)//按位逆序,比如tmp为1010,则循环后tran为0101 { if(tmp>>j&0x01)//依次根据tmp从低位到高位是否为1判断tran从高到低位是否置1 tran|=bitest>>j; } if(tran>9) s[i]=tran-10+'A'; else s[i]=tran+'0'; } } } int main() { string s1,s2; cin>>s1>>s2; s1+=s2; str_sort(s1); ProStr(s1); cout<<s1<<endl; //system("pause"); return 0; }
相关文章推荐
- 1分钟搭建教学直播点播平台
- mysql MyISAM表锁
- 浏览器阻止新窗口(window.open或新窗的form提交)
- 用事件委托获取每一个LI的索引值 有问题
- android byte[] 和short[]的转换
- LeetCode----Palindrome Linked List
- iOS图片缓存库基准对比
- ValueStack和OGNL达到Struts2形式的数据存储原理
- package.json字段全解
- hdu 5328 Problem Killer 2015 Multi-University Training Contest 4
- UIPickView
- 归档 & 反归档
- 在服务器 IIS7.0上配置发布网站 遇到404 或401错误
- struts文件上传,获取文件名和文件类型
- 数据结构-线性表
- 什么是Bower
- 关于线程池ThreadPoolExecutor使用总结
- SAE微信公众号PHP SDK, token一直验证失败
- Dream------Hadoop--FSDataInputStream和FSDataOutputStream
- JS实现图片延迟加载