标签:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{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 };
标签:
原文地址:http://www.cnblogs.com/zl1991/p/4775356.html