天天看点

【20190822】【校招笔试题】字符串排序_美团问题思路及代码知识点

问题

【20190822】【校招笔试题】字符串排序_美团问题思路及代码知识点

样例输入:waimai,dache,lvyou,liren,meishi,jiehun,lvyoujingdian,jiaopei,menpiao,jiudian

样例输出:waimai,menpiao,meishi,lvyou,lvyoujingdian,liren,jiudian,jiehun,jiaopei,dache

思路及代码

# 网上找的代码,是冒泡排序思想,compare 函数写的很巧妙,可以参考。
# strs = input().split(',')
string = "waimai,dache,lvyou,liren,meishi,jiehun,lvyoujingdian,jiaopei,menpiao,jiudian"
strs = string.split(",")
def compare(s1, s2):
    if not s1:
        return True
    if not s2:
        return False
    for i in range(min(len(s1), len(s2))):
    #    if ord(s1[i]) > ord(s2[i]):
    #       return True
    #    elif ord(s1[i]) < ord(s2[i]):
    #       return False
        if s1[i] > s2[i]:
            return True
        elif s1[i] < s2[i]:
            return False
    return True if len(s1) < len(s2) else False
for i in range(len((strs))):
    for j in range(i+1, len(strs)):
        if compare(strs[j], strs[i]):
            strs[i], strs[j] = strs[j], strs[i]
print(",".join(strs))
           

知识点

1. ord(c) 函数:c 是一个字符,返回值是一个十进制数,是 c 对应的 ASCII 码值。

2. "sep".join(seq) 的用法:

sep 是分隔符,可以为空。

seq 是要分隔的序列、列表、字符串、元组、字典等。

功能:将 seq 用 sep 分隔,组成一个新的字符串。返回值是一个字符串。

(参考:python中的join()函数的用法)

继续阅读