把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
string.append 在末尾添加string或char。string.compare,逐个比较,abcd>ab;
思路:先讲num转化为string。之后对于string的比较,str1+str2<str2+str1;将其排序即可。对于num转string,用stringstream。
另一种写法,string *str=new string[n],string数组
1 class Solution { 2 public: 3 string PrintMinNumber(vector<int> numbers) { 4 5 int n=numbers.size(); 6 string res; 7 if(n<1) return res; 8 vector<string> str; 9 string tmp; 10 for(int i=0;i<n;i++){ 11 stringstream stream; 12 stream<<numbers[i]; 13 stream>>tmp; 14 str.push_back(tmp); 15 stream.clear(); 16 } 17 for(int i=0;i<n-1;i++){ 18 for(int j=0;j<n-1-i;j++){ 19 if(compare(str[j],str[j+1])) 20 swap(str[j],str[j+1]); 21 } 22 } 23 for(int i=0;i<n;i++) 24 res+=str[i]; 25 return res; 26 } 27 private: 28 bool compare(string str1,string str2){ 29 string tmp1=str1.append(str2); 30 string tmp2=str2.append(str1); 31 if(tmp1.compare(tmp2)>0) 32 return true; 33 return false; 34 } 35 };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了