【Python】对一个字符串中的所有英文字母进行排序

题目

对一个字符串中的所有英文字母进行排序

栗子

字符串
a = 'hello word'
排序后结果:
['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']

code

本题采用了两种方法进行操作;

方法一

# 方法一:使用sorted
def word_sort_m1(words):
    # 先转换成列表
    tmp = [i for i in words if i != ' ']
    res = sorted(tmp)
    return res

if __name__ == '__main__':
    a = 'hello word'
    res_1 = word_sort_m1(a)
    print("res_1 : ", res_1)
   

结果

res_1 :  ['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']

方法二

# 方法二:转成对应数字排序,排完之后再转成对应的字母
def word_sort_m2(words):
    res3 = [ord(i) for i in words if i != ' ']
    for i in range(len(res3)):
        for j in range(len(res3) - i - 1):
            if res3[j] > res3[j + 1]:
                res3[j], res3[j + 1] = res3[j + 1], res3[j]
    return [chr(i) for i in res3]


if __name__ == '__main__':
    a = 'hello word'
    res_2 = word_sort_m2(a)
    print("res_2 : ", res_2)

结果

res_2 :  ['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']

从大道小的排序

刚才排序后的两种结果都是从小到大的排序,如果在实际过程中可能会用到从大道小的场景,我们挑第二种方式做变更

# 方法二:转成对应数字排序,排完之后再转成对应的字母
def word_sort_m2(words):
    res3 = [ord(i) for i in words if i != ' ']
    for i in range(len(res3)):
        for j in range(len(res3) - i - 1):
            if res3[j] < res3[j + 1]:
                res3[j], res3[j + 1] = res3[j + 1], res3[j]
    return [chr(i) for i in res3]

if __name__ == '__main__':
    a = 'hello word'
    res_2 = word_sort_m2(a)
    print("res_2 : ", res_2)

结果

res_2 :  ['w', 'r', 'o', 'o', 'l', 'l', 'h', 'e', 'd']

第一种方法也很好做倒序,只需要一个参数即可以解决这个问题:

# 方法一:使用sorted
def word_sort_m1(words):
    # 先转换成列表
    tmp = [i for i in words if i != ' ']
    res = sorted(tmp,reverse=True)
    return res

在sorted中添加一个reverse=True就OK了;
说的讲解一种方式,没有刹住车两种方式都给讲出来了~~~

汇总code

# 对一个字符串中的所有英文字母进行排序

# 方法一:使用sorted
def word_sort_m1(words):
    # 先转换成列表
    tmp = [i for i in words if i != ' ']
    res = sorted(tmp)
    return res


# 方法二:转成对应数字排序,排完之后再转成对应的字母
def word_sort_m2(words):
    res3 = [ord(i) for i in words if i != ' ']
    for i in range(len(res3)):
        for j in range(len(res3) - i - 1):
            if res3[j] > res3[j + 1]:
                res3[j], res3[j + 1] = res3[j + 1], res3[j]
    return [chr(i) for i in res3]


if __name__ == '__main__':
    a = 'hello word'
    res_1 = word_sort_m1(a)
    res_2 = word_sort_m2(a)
    print("res_1 : ", res_1)
    print("res_2 : ", res_2)

结果

res_1 :  ['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']
res_2 :  ['d', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']

欢迎关注微信公众号、blibli频道:魔都吴所谓,获取更多资源分享与行业交流的信息~~~

你可能感兴趣的:(算法,Python,leetcode,python,开发语言)