把数组排成最小的数
来源:互联网 发布:网络打鱼游戏版本费 编辑:程序博客网 时间:2024/06/05 19:48
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
class Solution {public: string PrintMinNumber(vector<int> numbers) { if(numbers.size()==0) return ""; vector<string> vs=intConvertStr(numbers); string str=""; for(int i=0;i<vs.size();i++) str+=vs[i]; return str; } vector<string> intConvertStr(vector<int> numbers){ vector<string> vs; vs.resize(numbers.size()); vs[0]=itos(numbers[0]); for(int i=1;i<numbers.size();i++){ string s=itos(numbers[i]); int j; for(j=i-1;j>=0;j--){ vs[j+1]=vs[j]; if(com(s,vs[j])){ vs[j+1]=s; break; } } if(j==-1) vs[0]=s; } return vs; } string itos(int n){ vector<int> vc; while(n!=0){ vc.push_back(n%10); n/=10; } string s=""; for(int i=vc.size()-1;i>=0;i--){ s.push_back(char(vc[i]+48)); } return s; } bool com(string s,string st){ int i; for(i=0;i<s.length()&&i<st.length();i++){ if(s[i]>st[i]) return true; if(s[i]<st[i]) return false; } if(i==s.length()){ while(i<st.length()&&st[i]==st[i-1]) i++; if(i!=st.length()&&st[i]>st[i-1]) return false; return true; } if(i==st.length()){ while(i<s.length()&&s[i]==s[i-1]) i++; if(i!=s.length()&&s[i]>s[i-1]) return true; return false; } return false; } };
0 0
- 把数组排成最小的数--总结
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数--总结
- 把数组排成最小的数--总结
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- hdoj 5523 Game 【博弈】
- 整数中1出现的次数(从1到n整数中1出现的次数)
- Develop--Training(四)Getting Started--Managing the Activity Lifecycle
- Hadoop 配置文件存放位置
- 实战c++中的string系列--string的替换、查找(一些与路径相关的操作)
- 把数组排成最小的数
- Shell学习--(2)变量
- 几种目前常用的人脸表情库
- android assets中.9.png的使用
- 在云平台上基于Go语言+Google图表API提供二维码生成应用
- 安卓异步任务AsyncTask
- 黑马程序员————OC基础——定义OC的类和创建OC的对象
- 丑数
- 懒加载