179. Largest Number
2016-05-26 10:31
423 查看
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given
Note: The result may be very large, so you need to return a string instead of an integer.
【思路】要对数字进行排列,首位大的在前。比较每个数字的首位,这在不知道位数的情况下,很难实现,所以将INT转换成string再比较。由于string的连接操作非常方便,所以比较首位的大小,可以转化成比较连接后string的大小。
使用stringstream对象简化类型转换,从int到string,再进行多次转换的时候,必须调用stringstream的成员函数clear().
class Solution {
public:
static bool cmp(string a, string b)
{
return (a + b)>(b+a);
}
string largestNumber(vector<int>& nums) {
string result="" ;
if(nums.size()==0) return result;
int size = nums.size();
vector<string> s_nums(size);
stringstream ss;
for(int i = 0; i < size; i++)
{
ss<<nums[i];
ss>>s_nums[i];
ss.clear();
}
sort(s_nums.begin(), s_nums.end(), cmp);
if(s_nums[0]=="0") return s_nums[0];
for(int j = 0; j < s_nums.size(); j++)
result += s_nums[j];
return result;
}
};
For example, given
[3, 30, 34, 5, 9], the largest formed number is
9534330.
Note: The result may be very large, so you need to return a string instead of an integer.
【思路】要对数字进行排列,首位大的在前。比较每个数字的首位,这在不知道位数的情况下,很难实现,所以将INT转换成string再比较。由于string的连接操作非常方便,所以比较首位的大小,可以转化成比较连接后string的大小。
使用stringstream对象简化类型转换,从int到string,再进行多次转换的时候,必须调用stringstream的成员函数clear().
class Solution {
public:
static bool cmp(string a, string b)
{
return (a + b)>(b+a);
}
string largestNumber(vector<int>& nums) {
string result="" ;
if(nums.size()==0) return result;
int size = nums.size();
vector<string> s_nums(size);
stringstream ss;
for(int i = 0; i < size; i++)
{
ss<<nums[i];
ss>>s_nums[i];
ss.clear();
}
sort(s_nums.begin(), s_nums.end(), cmp);
if(s_nums[0]=="0") return s_nums[0];
for(int j = 0; j < s_nums.size(); j++)
result += s_nums[j];
return result;
}
};
相关文章推荐
- Codeforces Round #354 (Div. 2)(C)尺取
- 数据结构与算法的分析 —— 渐进复杂度(三个记号)
- Queue LifoQueue and PriorityQueue
- 解决方法:android 6.0(api 23) SDK,不再提供org.apache.http.*(只保留几个类)
- 侧滑
- Verilog基础知识1(FPGA小数运算处理--定点小数)
- Javascript水平提升
- nyoj 762第k个互质数 poj 2773Happy 2006
- sql语句里的if用法实例
- 关于ecplise导入项目之后在tomcat里无法添加的解决方法
- c# 继承 virtual override new
- C#连接Excel的连接字符串
- codeforces 676B (DP 水)
- css二阴影+第三维度z-index
- 使用zsh的十大优点
- Spark的RDD检查点实现分析
- 解决:Hibernate: Encountered a duplicated sql alias [] during auto-discovery of a native-sq
- 在jsp中获取已选中checkbox其他列的值
- Nginx负载均衡
- 网页标题加图片