把数组排成最小的数

string 型默认为“”;它是不能和NULL进行比较的。牛客网上刷这题,居然因为我判断输入为空时,返回NULL,判我死循环!!!

 

bool comp(string a,string b)
    {
     string tmp1,tmp2;
     tmp1=a+b;
     tmp2=b+a;
     return (tmp1<tmp2) ? true: false;
    }
class Solution {
public:
    string inToStr(int n)
        {
        char *p=new char[100];
        sprintf(p,"%d",n);
       string s=p;
       delete []p;
        return s; 
        
    }
   
    string PrintMinNumber(vector<int> numbers) {
        string s;
        if(numbers.empty())
            return s;
        string tmp;
        vector<string> num;
        for(int i=0;i<numbers.size();i++)
            {
            tmp=inToStr(numbers[i]);
            num.push_back(tmp);
        }
            
      //  if(numbers.size()==1)
         //   return num[0];
        sort(num.begin(),num.end(),comp);
        for(int i=0;i<num.size();i++)
            s+=num[i];
        return s;
    }
};

 

posted on 2016-04-13 08:59  RenewDo  阅读(97)  评论(0编辑  收藏  举报

导航