最大数量.给定一个非负整数列表,排列它们以使它们形成最大的数字
largest number. Given a list of non negative integers, arrange them such that they form the largest number
为什么这段代码给出错误的输出?
问题:给定一个非负整数列表,将它们排列成最大的数字。
例如:
给定 [3, 30, 34, 5, 9],最大形成数为 9534330。
注意:结果可能非常大,因此您需要返回字符串而不是整数。
这是我的代码:
bool compareinterval(int x,int y);
string Solution::largestNumber(const vector<int> &A)
{
//sort(A.begin(),A.end());
vector< int>B;
int i,x=0;
for(i=0;i<A.size();i++)
B.push_back(A[i]);
sort(B.begin(),B.end(),compareinterval);
vector<string> vect;
string result;
for(i=0;i<B.size();i++)
{
ostringstream convert;
convert<<B[i];
if(B[i]!=0)
x=1;
string str1=convert.str();
result.append(str1);
}
if(x==0)
return "0";
else
return result;
}
bool compareinterval(int x,int y)
{
ostringstream convert;
string result;
convert<<x;
string str1=convert.str();
//ostringstream convert;
//string result;
// ostringstream convert;
convert<<y;
string str2=convert.str();
int i;
for(i=0;i<min(str1.length(),str2.length());i++)
{
if((str1[i]-'0')<(str2[i]-'0'))
return false;
if((str1[i]-'0')>(str2[i]-'0'))
return true;
}
//return true;
if(str1.length()<str2.length())
return true;
else
return false;
}
这是输入和输出:
input:A : [ 9, 99, 999, 9999, 9998 ]
my output:999899999999
我定义了无法正常工作的比较函数。
有人可以纠正吗?
这就是我想到的。
- 将所有输入转换为字符串 - 10 转换为"10">
- 使用
std::sort
按降序排列字符串。您可以使用自定义比较方法或strcmp
。 - 现在只需连接重新排列的字符串即可。
问题是:
convert<<x;
string str1=convert.str();
convert<<y;
string str2=convert.str();
您要将第二个整数追加到第一个整数。例如,如果 x 为 9,y 为 8,str1 将为 9,str2 将为 98。那不是你想要的。 而是使用单独的变量(或在重用之前重置字符串流(
convert1<<x;
string str1=convert1.str();
convert2<<y;
string str2=convert2.str();
这应该使事情顺利进行。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 为什么不;名字在地图上是按顺序排列的吗
- 如何用数字处理log(0)
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 如何在不使用 C++ 中的数组或函数的情况下查找 N 位数字的所有排列
- 最大数量.给定一个非负整数列表,排列它们以使它们形成最大的数字
- 使用指针重新排列数组中的数字
- 如何生成没有两个相邻连续数字的排列
- 增量数字更改循环?(所有排列)
- 所有排列,并找到最小数字的 c++
- N个整数与K对数字有多少个不能相邻的排列?
- 给定数字的排列和组合
- 数字数字的排列
- 如何用数字排列字符串
- 在给定N-1个约束的情况下,计算小于整数N的数字的可能排列数
- 如何用C++编写一个程序,该程序从输入中接收10个数字并检查这些数字是否按升序排列
- 排列数字的麻烦