【剑指offer】把数组排成最小的数
2020-12-13 15:16
阅读:516
标签:image begin 最小 div one 规则 padding for lock
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
分析:排成最小的数,那么这些数组元素肯定有个最佳的排序,所以我们需要对数组元素进行排序,排序之后数组元素顺序连接即可组成最小的数
所以这些数排序的规则是什么?字典序!
假如x1x2x3和y1y2y3两个数,组成的数x1x2x3y1y2y3或y1y2y3x1x2x3字典序小的放前面!
关键排序规则函数:
static bool cmp(string a,string b) { string str1=a+b; string str2=b+a; return str1.compare(str2) }
//排序规则函数 static bool cmp(string a,string b) { string str1=a+b; string str2=b+a; return str1.compare(str2)0; } //int 转 string string intTostring(int x) { stringstream ss; ssx; string str=ss.str(); return str; } string PrintMinNumber(vectorint> numbers) { vectorstring> v; int n=numbers.size(); if(n==0) return ""; for(int i=0;i) { v.push_back(intTostring(numbers[i])); } //按照规则排序 sort(v.begin(),v.end(),cmp); //按照排序后直接顺序连接即可 string ans=""; for(int i=0;i ) { ans+=v[i]; } return ans; }
【剑指offer】把数组排成最小的数
标签:image begin 最小 div one 规则 padding for lock
原文地址:https://www.cnblogs.com/yinbiao/p/11577468.html
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:【剑指offer】把数组排成最小的数
文章链接:http://soscw.com/index.php/essay/34966.html
文章标题:【剑指offer】把数组排成最小的数
文章链接:http://soscw.com/index.php/essay/34966.html
评论
亲,登录后才可以留言!