题目
给定字符串内有很多正整数,要求对这些正整数进行排序,然后返回排序后指定位置的正整数
排序要求:按照每个正整数的后三位数字组成的整数进行从小到大排序
1)如果不足三位,则按照实际位数组成的整数进行比较
2)如果相等,则按照输入字符串中的原始顺序排序
说明(以下内容考生无须检查,调用者保证):
1) 字符串以’\0’结尾,仅包含数字、空格
2) 字符串内正整数之间以单个空格分隔,字符串首尾没有空格
3) 正整数格式为十进制,大小:1~1000000,正整数的数字非零开始
示例:
如字符串内容
1223 22 3232 2016
按照规定排序后
2016 22 1223 3232
查询排序后的第3个数是
1223
知识点:
工程环境请使用VS2005
题目来源: 软件训练营
维护人: d00191780
练习阶段: 中级
代码
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
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(serial_number < 1 || output_string_max_length < 1){
return -1;
}
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;
}
vec.push_back(tmp);
tmp = 0;
}
else{
tmp = tmp * 10 + input_string[i] - '0';
}
}
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(serial_number > vec.size()){
return -1;
}
char num[11];
sprintf(num,"%d",vec[serial_number - 1]);
int len = strlen(num);
if ((len + 1) > output_string_max_length){
return -1;
}
strcpy(output_string,num);
return 0;
}
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
华为机试一霸教你过华为机试演讲稿..pdf
华为OD机试(..75.rar
华为机试真题(非牛客网试练题)OD考试真题,不定期更新,文档含代码解答
华为机试一霸教你过华为机试.doc
华为机试一霸教你过华为机试。大菊厂招聘有三关,心理测试,机试,面试。
。。。
。。。
华为机试算法题总结 经验分享
华为机试oj练习题2014
华为机试一霸教你过华为机试e-18页.pdf
华为OD系列--华为OD机试
本人在准备2014年华为机试的时候,进行整理的,代码全部运行成功。如有错误,请大家见谅。
华为机试题目100题练习题
华为机试成功归来,与小伙伴们分享下经验
大师兄教你如何过华为机试
贰壹贰叁零华为OD机试.pptx 华为OD机试.pptx 华为OD机试.pptx
里面有几十道华为历届考过的机试题,可供大家研究和参考,主要是里面的思想,只要理解透了里面的思想,非常有助于机试。
华为机试.md
华为机试.py
华为机试 ├─001 字符串最后一个单词长度 │ └─Source ├─002 计算字符个数 │ └─Source ├─003 明明的随机数 │ └─Source ├─004 字符串分隔 │ └─Source ├─005 进制转换 │ └─Source ├─006 质数...