题意:
解题思路:
1. 插入排序,前后比较,交换位置;
PHP代码实现:
class Solution { /** * @param Integer[] $nums * @return String */ function largestNumber($nums) { for ($i = 1; $i < count($nums); $i++) { for ($j = $i; $j > 0; $j--) { if ($nums[$j]. $nums[$j - 1] > $nums[$j - 1]. $nums[$j]) { $this->swap($nums, $j, $j - 1); } } } if ($nums[0] == "0") return "0"; return implode("", $nums); } function swap(&$arr, $i, $j) { $t = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $t; }}
go代码实现:
func largestNumber(nums []int) string { str := make([]string, len(nums)) for i, num := range nums { str[i] = strconv.Itoa(num) } sort.Slice(str, func (i, j int) bool { return str[i] + str[j] >= str[j] + str[i] }) newStr := strings.Join(str, "") if newStr[0] == '0' { return "0" } return newStr}