[华为机试练习题]12.整型字符串排序
2015-06-29 16:31
381 查看
题目
代码
给定字符串内有很多正整数,要求对这些正整数进行排序,然后返回排序后指定位置的正整数 排序要求:按照每个正整数的后三位数字组成的整数进行从小到大排序 1)如果不足三位,则按照实际位数组成的整数进行比较 2)如果相等,则按照输入字符串中的原始顺序排序 说明(以下内容考生无须检查,调用者保证): 1) 字符串以’\0’结尾,仅包含数字、空格 2) 字符串内正整数之间以单个空格分隔,字符串首尾没有空格 3) 正整数格式为十进制,大小:1~1000000,正整数的数字非零开始 示例: 如字符串内容 1223 22 3232 2016 按照规定排序后 2016 22 1223 3232 查询排序后的第3个数是 1223 知识点: 工程环境请使用VS2005 题目来源: 软件训练营 维护人: d00191780 练习阶段: 中级
代码
/*--------------------------------------- * 日期:2015-06-29 * 作者:SJF0115 * 题目:整型字符串排序 * 来源:华为上机 -----------------------------------------*/ #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; /***************************************************************************** Description : 根据字符串内容,输出排序后指定位置的正整数 Input Param : input_string 输入的字符串 serial_number 排序后的序列号,从1开始 output_string_max_length output_string的最大长度,包括'\0' Output Param : output_string 返回指定的字符串,必须包括'\0',内存由调用者分配和释放 Return Value : 成功返回0,失败返回-1(如:输入字符串是空串、输入序列号超出范围、最大长度不足) *****************************************************************************/ int find_string(const char* input_string, int serial_number, int output_string_max_length, char* output_string) { if(input_string == NULL || output_string == NULL){ return -1; }//if if(serial_number < 1 || output_string_max_length < 1){ return -1; }//if int size = strlen(input_string); vector<int> vec; int tmp = 0; for(size_t i = 0;i <= size;++i){ if(input_string[i] == ' ' || i == size){ if(tmp == 0){ return -1; }//if vec.push_back(tmp); tmp = 0; }//if else{ tmp = tmp * 10 + input_string[i] - '0'; }//else }//for //冒泡排序 int n = vec.size(); for(int i = 0;i < n-1;++i){ for(int j = 0;j < n-i-1;++j){ if(vec[j] % 1000 > vec[j+1] % 1000){ swap(vec[j],vec[j+1]); }//if }//for }//for if(serial_number > vec.size()){ return -1; }//if char num[11]; sprintf(num,"%d",vec[serial_number - 1]); int len = strlen(num); if ((len + 1) > output_string_max_length){ return -1; }//if strcpy(output_string,num); return 0; }
相关文章推荐
- json学习系列(3)-JSONObject的过滤设置
- Kerberos ticket lifetime及其它
- UNP 环境配置
- php基础教程-输出Hello World
- 链表的游标实现
- linux core文件GDB调试方法
- 桥接模式多维思想
- nginx 中禁止爬虫
- 不要轻易在数据库(尤其是线上数据库)执行,update、delete数据 !!!
- 如何成为一名优秀的web前端工程师(前端攻城师)?
- CentOS7 防火墙配置(关闭)
- PHPthinking邀请您一起赚Money
- Ajax两张表单一起上传
- Ubuntu PPA软件源的介绍与使用
- maven实战
- 简单数据结构之二叉树(C++实现)
- 解决spring+c3p0数据库连接一直增加的问题
- java基础-多线程
- Dubbo+Zookeeper
- unity3d 动态添加模型到场景中