剑指Offer之面试题33:把数组排成最小的数
2017-01-07 21:16
351 查看
所有代码均通过G++编译器测试,仅为练手纪录。
//面试题33:把数组排成最小的数
//题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出所有数字中最小的一个。
//
例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.
//面试题33:把数组排成最小的数
//题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出所有数字中最小的一个。
// 例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.
bool StrCompare(string &strElem1, string &strElem2)
{
string strFirst(strElem1+strElem2);
string strSecond(strElem2+strElem1);
return strFirst < strSecond;
}
string GetMinNum(int *piNum,int nSize)
{
if(NULL == piNum || nSize <= 0)
{
return "";
}
vector<string> vecNum(nSize);
for(int i = 0; i < nSize; ++i)
{
vecNum[i] = to_string(piNum[i]);
}
sort(vecNum.begin(), vecNum.end(), StrCompare);
string strMin;
for(int i = 0; i < nSize; ++i)
{
strMin += vecNum[i];
}
return strMin;
}
void TestGetMinNum()
{
int arrVal[] = {3,32,321};
int nValSize = sizeof(arrVal)/sizeof(int);
LogInfo("MinNum:%s",GetMinNum(arrVal,nValSize).c_str());
}
ZhaiPillary
2017-01-07
//面试题33:把数组排成最小的数
//题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出所有数字中最小的一个。
//
例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.
//面试题33:把数组排成最小的数
//题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出所有数字中最小的一个。
// 例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.
bool StrCompare(string &strElem1, string &strElem2)
{
string strFirst(strElem1+strElem2);
string strSecond(strElem2+strElem1);
return strFirst < strSecond;
}
string GetMinNum(int *piNum,int nSize)
{
if(NULL == piNum || nSize <= 0)
{
return "";
}
vector<string> vecNum(nSize);
for(int i = 0; i < nSize; ++i)
{
vecNum[i] = to_string(piNum[i]);
}
sort(vecNum.begin(), vecNum.end(), StrCompare);
string strMin;
for(int i = 0; i < nSize; ++i)
{
strMin += vecNum[i];
}
return strMin;
}
void TestGetMinNum()
{
int arrVal[] = {3,32,321};
int nValSize = sizeof(arrVal)/sizeof(int);
LogInfo("MinNum:%s",GetMinNum(arrVal,nValSize).c_str());
}
ZhaiPillary
2017-01-07
相关文章推荐
- 剑指Offer----面试题33:把数组排成最小的数
- 剑指Offer面试题33把数组排成最小的数,面试题34丑数
- 剑指offer-面试题33:把数组排成最小的数
- 剑指Offer面试题33(java版):把数组排成最小的数
- 剑指Offer:面试题33 把数组排成最小的数
- 【剑指Offer学习】【面试题33:把数组排成最小的数】
- 剑指offer--面试题33:把数组排成最小的数
- 剑指offer 面试题33—把数组排成最小的数
- 剑指Offer——面试题33:把数组排成最小的数
- 【剑指Offer学习】【面试题33:把数组排成最小的数】
- 【剑指Offer】面试题33:把数组排成最小的数
- 剑指offer 面试题33 数组组合的最小数
- 剑指offer-面试题33-把数组排成最小的数
- 【剑指offer】面试题33-把数组排成最小的数
- 剑指offer面试题33:把数组排成最小的数
- 【剑指offer】5.2时间效率——面试题33:把数组排成最小的数
- 剑指 offer——面试题8求旋转数组的最小值
- 【剑指Offer面试题】 九度OJ1504:把数组排成最小的数
- 剑指offer面试题8:旋转数组的最小数字
- 【练习笔记】剑指offer-面试题8 :旋转数组的最小数字