您的位置:首页 > 其它

Largest Number

2015-07-29 21:59 190 查看
Given a list of non negative integers, arrange them such that they form the largest number.

For example, given
[3, 30, 34, 5, 9]
, the largest formed number is
9534330
.

Note: The result may be very large, so you need to return a string instead of an integer.

题目解析:

这个题目跟剑指offer33题很像,一个求最小,一个求最大,注意,这里隐含了一个大数的问题,需要转化为字符串来处理,还有要防止[0,0]最后输出为[0],而不是[00]!!!一开始提交这个用例没能通过

解法思路:类似冒泡排序 假设【m,n】,若mn<nm则交换数字位置,最后把重新排好顺序的字符串给输出出来,下面上AC代码

public String largestNumber(int[] nums) {
    // 判断数组元素是否全部为0
		int count = 0;
		for (int i : nums) {
			if (i == 0)
				count++;
		}
		if (count==nums.length)
			return "0";
		int temp = 0;
		StringBuilder result = new StringBuilder("");
		for (int i = 0; i < nums.length; i++) {
			for (int j = 0; j < nums.length - i - 1; j++) {
				// 假设顺序为m n,若mn<nm则交换顺序
				if (compare(nums[j], nums[j + 1])) {
					temp = nums[j];
					nums[j] = nums[j + 1];
					nums[j + 1] = temp;
				}
			}
		}
		for (int i : nums) {
			result.append(String.valueOf(i));
		}
		return result.toString();
	}

	private boolean compare(int i, int j) {
		String t1 = String.valueOf(i) + String.valueOf(j);
		String t2 = String.valueOf(j) + String.valueOf(i);
		if (t1.compareTo(t2) <= 0)
			return true;

		else
			return false;
	}


版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: