贪心算法--拼接最大数字问题

贪心,算法,拼接,最大,数字,问题 · 浏览次数 : 6

小编点评

**博客地址:** https://www.cnblogs.com/zylyehuo/# -*- coding: utf-8 -*-from functools import cmp_to_keydef xy_cmp(x, y): if x + y < y + x: return 1 # 表示 x>y elif x + y > y + x: return -1 # 表示 x<y else: return 0 # 表示 x=ydef number_join(li): li = list(map(str, li)) li.sort(key=cmp_to_key(xy_cmp)) return \"\".join(li) **内容摘要:** 博客文章介绍了一个名为 `number_join` 的函数,该函数将一个列表中的元素按照它们的比较结果排序,并以字符串形式返回。 **步骤:** 1. **定义一个 `xy_cmp` 函数:**该函数比较两个元素的比较结果,并根据大小排序它们。如果 `x + y` 小于 `y + x`,则返回 `1`;如果 `x + y` 大于 `y + x`,则返回 `-1`;如果 `x + y` 等于 `y + x`,则返回 `0`。 2. **将列表 `li` 排序以按照 `xy_cmp` 排序:**函数首先将 `li` 列表转换为字符串列表,然后使用 `cmp_to_key` 函数根据 `xy_cmp` 对字符串进行排序。 3. **将排序后的字符串列表转换为字符串:**函数将排序后的字符串列表转换为字符串并将其以 `join` 方法连接起来。 **示例:** 代码示例展示了如何使用 `number_join` 函数排序列表: ```python li = [32, 94, 128, 1286, 6, 71] print(number_join(li)) ``` **输出:** ``` 32,128,1286,6,71,94 ```

正文

博客地址:https://www.cnblogs.com/zylyehuo/

# -*- coding: utf-8 -*-

from functools import cmp_to_key


def xy_cmp(x, y):
    if x + y < y + x:
        return 1  # 表示 x>y
    elif x + y > y + x:
        return -1  # 表示 x<y
    else:
        return 0  # 表示 x=y


def number_join(li):
    li = list(map(str, li))
    li.sort(key=cmp_to_key(xy_cmp))
    return "".join(li)


li = [32, 94, 128, 1286, 6, 71]

print(number_join(li))

与贪心算法--拼接最大数字问题相似的内容: