第73题 Largest Number
来源:互联网 发布:域名在哪买都是一样的 编辑:程序博客网 时间:2024/06/10 02:10
Given a list of non negative integers, arrange them such that they form the largest number.
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.
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
Solution in C++:
class Solution {public: string largestNumber(vector<int>& nums) { sort(nums.begin(), nums.end(), Compare); if(nums[nums.size()-1]==0||nums.size()==0) return "0"; string solution = ""; for(int i=nums.size()-1; i>= 0; i--){ solution+= to_string(nums[i]); } return solution; } static bool Compare(const int &a, const int &b){ string strA = to_string(a); string strB = to_string(b); if(strA.size()==strB.size()) return a<b; int digit=0; while(digit<strA.size()&&digit<strB.size()){ if(strA[digit]-'0'<strB[digit]-'0') return true; if(strA[digit]-'0'>strB[digit]-'0') return false; digit++; } if(digit<strA.size()){ if(strA[digit]=='0') return true; return Compare(atoi(strA.substr(digit).c_str()), b); } if(digit<strB.size()){ if(strB[digit]=='0') return false; return Compare(a, atoi(strB.substr(digit).c_str())); } }};
Note: 如果排完序后最大数为0,说明数组里所有数都是0,要返回“0”。
atoi是c里面的函数,参数必须是const char*,所以要把字符串c_str()一下。
C++中substr函数参数为(起始index,substring长度),所以endindex = startIndex+length-1
Compare函数必须是static bool类型,<返回true,>=返回false。
当两数从左数i位都相同,调用递归时,因为atoi函数会将最前面的0省略,而如果获得的substr从0开始时,比任何其他不从0开始的数排序都应该小,所以strA[digit]和strB[digit]为‘0’时,直接返回。
0 0
- 第73题 Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- MIT算法导论——第二讲.Solving Recurrence
- 最长递增序列LIS研究
- 正则表达式匹配
- DSP2812--调试错误及解决办法1——Debug/led.out' not built
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法
- 第73题 Largest Number
- poj - 1837 - Balance(dp)
- php向数据库插入数据出现乱码问题
- ScrollView在初始化滚动条在某一位置的时候为什么非得开一个线程?还有就是scrollTo与smoothScrollTo的区别是什么?
- Xcode开发小技巧(快捷键)
- (2)Data-Part1. Definitions
- pantheon-terminal配置
- HALCON中的算子大全(中英对照)
- Java学习笔记(5)——Scanner类的使用