本文共 2596 字,大约阅读时间需要 8 分钟。
方法一: 利用a+b和b+a进行比较选择其中数值较大的组合方式
public class Solution { public void maxValueNum(int[] array) { int len = array.length; String maxValueStr = ""; for(int i=0;i0) { swap(array, j, (j+1)); } } maxValueStr += array[len-1-i]; } System.out.println(maxValueStr); } public void swap(int[] array, int a, int b) { int tmp = array[a]; array[a] = array[b]; array[b] = tmp; }}main函数:public class Main { public static void main(String[] args) { Solution s = new Solution(); int[] array = { 195,23,56,235,7}; s.maxValueNum(array); }}运行结果为: 75623523195
方法二: 利用compare函数特性来进行排序选择
public class Solution1 { public void maxValueNum(int[] array) { int len = array.length; String maxValueStr = ""; for(int i=0;i0) { swap(array, j, (j+1)); } } maxValueStr += array[len-1-i]; } System.out.println(maxValueStr); } public int compare(int a, int b) { int count1 = 0; int count2 = 0; int middleNum1 = a; int middleNum2 = b; while(middleNum1 != 0) { count1++; middleNum1 /= 10; } while(middleNum2 != 0) { count2++; middleNum2 /= 10; } int num1 = (int) (a*Math.pow(10,count2)+b); int num2 = (int) (b*Math.pow(10,count1)+a); return num1 > num2 ? 1 : (num1 == num2 ? 0 : -1); } public void swap(int[] array, int a, int b) { int tmp = array[a]; array[a] = array[b]; array[b] = tmp; }}main函数:public class Main { public static void main(String[] args) { Solution1 s1 = new Solution1(); int[] array = { 195,23,56,235,7}; s1.maxValueNum(array); }}运行结果为: 75623523195
方法三: 利用贪心算法每次求最优值
public class Solution2 { public void maxValueNum(int[] array) { int len = array.length; String maxValueStr = ""; for(int i=0;i0) { swap(array, j, (j+1)); } } maxValueStr += array[len-1-i]; } System.out.println(maxValueStr); } public void swap(int[] array, int a, int b) { int tmp = array[a]; array[a] = array[b]; array[b] = tmp; }}main函数:public class Main { public static void main(String[] args) { Solution2 s2 = new Solution2(); int[] array = { 195,23,56,235,7}; s2.maxValueNum(array); }}运行结果为: 75623523195
转载地址:http://bahmi.baihongyu.com/