华为OJ 中级 字符串合并处理
来源:互联网 发布:ubuntu安装eclipse c 编辑:程序博客网 时间:2024/05/21 21:41
题目描述
按照指定规则对输入的字符串进行处理。
详细描述:
将输入的两个字符串合并。
对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。
对排训后的字符串进行操作,如果字符为‘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
思路 : 首先将字符串合并然后对奇偶为进行排序,然后将字符串进行BIT倒序
#include<iostream> #include<string> using namespace std; unsigned int fun3(int c) { //bit倒序处理 int i; unsigned int newc = 0; for (i = 0; i <4; i++) { if (i != 3) { newc |= (c & 1); newc <<= 1; c >>= 1; } else newc |= (c & 1); } return newc; } int main() { string s1, s2; while (cin >> s1 >> s2) { string s = s1 + s2; int length = s1.size() + s2.size(); if (length % 2 == 0) //如果字符串长度为偶数(进行奇数偶数位排序) { for (int j = length - 4; j >= 0; j -= 2) for (int i = 0; i <= j; i += 2) { if (s[i] > s[i + 2])swap(s[i], s[i + 2]); } for (int j = length - 3; j >= 1; j -= 2) for (int i = 1; i <= j; i += 2) { if (s[i] > s[i + 2])swap(s[i], s[i + 2]); } } else // 如果字符串长度为奇数(进行奇数偶数位排序) { for (int j = length - 3; j >= 0; j -= 2) for (int i = 0; i <= j; i += 2) { if (s[i] > s[i + 2])swap(s[i], s[i + 2]); } for (int j = length - 4; j >= 1; j -= 2) for (int i = 1; i <= j; i += 2) { if (s[i] > s[i + 2])swap(s[i], s[i + 2]); } } for (int i = 0; i < s.size(); i++) { if (s[i] >= 'a'&&s[i] <= 'f') //字符串的转换 { int temp = fun3(s[i]-'a'+10); if (temp >= 10)s[i] = 'A' + temp - 10; else s[i] = '0' + temp; } else if (s[i] >= 'A'&&s[i] <= 'F') { int temp = fun3(s[i] - 'A' + 10); if (temp >= 10)s[i] = 'A' + temp - 10; else s[i] = '0' + temp; } else if (s[i]>='0'&&s[i]<='9') { int temp = fun3(s[i] - '0'); if (temp >= 10)s[i] = 'A' + temp - 10; else s[i] = '0' + temp; } } cout << s << endl; } return 0; }
0 0
- 华为OJ中级题-字符串合并处理
- 华为OJ 中级 字符串合并处理
- 华为oj中级 字符串合并处理
- 华为oj 字符串合并处理
- 华为oj字符串合并处理
- 【华为 OJ 】 字符串合并处理
- 华为OJ:字符串合并处理
- 华为OJ(字符串合并处理)
- 【华为OJ】【025-字符串合并处理】
- 华为OJ——字符串合并处理
- 华为OJ——字符串合并处理
- [华为OJ--C++]025-字符串合并处理
- 华为OJ——字符串合并处理
- 字符串合并处理 (中级)
- 华为OJ 中级:字符串排序
- 华为OJ 中级 字符串排序
- 华为oj中级 字符串排序
- 华为OJ中级题-字符串排序
- Android MultiDex机制杂谈
- 配置——Nginx配置文件解析
- 深入理解Java内存模型(六)——final
- 无限循环
- h5学习笔记: 图片浮动提示
- 华为OJ 中级 字符串合并处理
- Codeforces 706E Working routine
- 开发工具Android ADT和Android Studio
- 浅谈对产品原型的深入分析
- 深入理解Java内存模型(七)——总结
- hibernate多对多映射关系
- 测试前面的安装是否成功
- VirtualBox: 开源的Virtual Machine
- C++引用及常引用