目录
一、题目
数组里的所有元素可以拆的情况
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
二、思路
一共分为4步:
1.把数组中的数拆成单个
2.剔除0,并记录0的个数
3.排序
4.将0从第二个数开始插入,因为0必定比第二个数要小
【排序思想我采用的bubbleSort。】
三、代码
class Solution {
public:
vector<int> getSingleNumber(int n)
{
vector<int> ans;
return ans;
}
void bubbleSort(vector<int>& v)
{
for (int i = 0; i < v.size() - 1; i++)
{
bool flag = false;
for (int j = 0; j < v.size() - 1 - i; j++)
{
if (v[j] > v[j + 1])
{
int temp = v[j];
v[j] = v[j + 1];
v[j + 1] = temp;
flag = true;
}
}
if (flag == false)
{
return;
}
}
}
string minNumber(vector<int>& nums) {
//1.把数组中所有的数拆成单个
vector<int> single;
for (int i = 0; i < nums.size(); i++)
{
int n = nums[i];
while (n)
{
int cur = n % 10;
single.push_back(cur);
n = (n - cur) / 10;
}
}
//2.剔除0,并记录0的个数
vector<int> exceptZero;
for (int i = 0; i < single.size(); i++)
{
if (single[i] != 0)
{
exceptZero.push_back(single[i]);
}
}
int numberZero = single.size() - exceptZero.size();
//3.排序
bubbleSort(exceptZero);
//4.将0从第二个数开始插入
string s = "";
char begin = '0' + exceptZero[0];
s += begin;
for (int i = 0; i < numberZero; i++)
{
s += '0';
}
for (int i = 1; i < exceptZero.size(); i++)
{
s += ('0'+exceptZero[i]);
}
return s;
}
};