面试题总结1:拼接出最大数字

算法题:给出一组数字,拼接一个最大的值

举例如下:

String[ ] strings = {"12","43","6","9","78","11"};

则拼接的最大的数为9786431211

package javafirst;
public class Maxnumber {
public static void main(String[] args){
String[] str = {"12","43","6","9","78","11"};
String w = Getnumber(str);
System.out.println(w);
}
public static  String Getnumber(String[]  str)
{
for(int j = 0;j<str.length-1; j++){
for (int k =j+1; k<str.length;k++)//因为是拼接处最大数,不是简单的相邻两位比较,采用冒泡法。
{if(cmp(str[j],str[k]))
{  String c = str[k];
  str[k] = str[j];
  str[j] = c;   
}
}
}
String d = "";
for(int m =0;m<str.length;m++)
{ d = d+ str[m];
}
return d;
}
public static boolean cmp(String  str1, String str2){
String string1 = str1+str2;
String string2 = str2+str1;
for(int a = 0;a<string1.length();a++){
if(Integer.parseInt(string1.substring(a, a+1))>Integer.parseInt(string2.substring(a, a+1)))
{return false;
} if(Integer.parseInt(string1.substring(a, a+1))<Integer.parseInt(string2.substring(a, a+1)))
{return true;
}   
}
return false;//假如是12 和11 拼接,第一位相等是不用换,然后继续比较。
}     
}

猜你喜欢

转载自blog.csdn.net/juleen890/article/details/80792873
今日推荐