首页 > 试题广场 >

字符串排序

[编程题]字符串排序
  • 热度指数:521784 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定 n 个字符串,请对 n 个字符串按照字典序排列。

数据范围: ,字符串长度满足

输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。


输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
示例1

输入

9
cap
to
cat
card
two
too
up
boat
boot

输出

boat
boot
cap
card
cat
to
too
two
up
看了前面用c++写的大佬,突然感觉python太香了
def rankarr(list):
    list.sort()
    for item in list:
        print(item)
arr = []
num = input()
for i in range(int(num)):
    arr.append(input())
rankarr(arr)


发表于 2021-05-19 16:26:25 回复(0)
while 1:
    try:
        str_list = []
        for i in range(int(input())):
            str_list.append(input())
        str_list.sort()
        for i in str_list:
            print(i)
    except:
        break

发表于 2021-04-22 14:33:54 回复(0)
while True:
    try:
        n = int(input())
        lst = []
        for i in range(n):
            lst.append(input())
        lst.sort()
        for s in lst:
            print(s)
    except:
        break
发表于 2021-04-20 17:28:47 回复(0)
[print(i) for i in sorted([input() for i in range(eval(input()))])]

发表于 2021-04-18 17:33:47 回复(0)
while 1:
    try:
        a=int(input())
        lst=[]
        while int(a)>0:
            lst.append(input())
            a-=1
        lst.sort()
        for i in lst:
            print(i)
    except:
        break

发表于 2021-04-04 22:40:45 回复(0)
n = int(input())
str_list = []
for i in range(n):
    str_one = input()
    str_list.append(str_one)
# print(str_list)
str_list.sort()
for one in str_list:
    print(one)
发表于 2021-04-01 20:06:58 回复(0)
while True:
    try:
        num = int(input())
        a = []
        for i in range(num):
             a.append(input())
        a.sort()
        for x in a:
            print(x)
    except EOFError:
        break

编辑于 2021-03-24 13:39:34 回复(0)
num=int(input())
list1=[]
for i in range(num):
    list1.append(input())
list2=sorted(list1)
for i in list2:
    print(i)
发表于 2021-03-18 20:33:02 回复(0)
import sys
inf = sys.stdin.readlines()
num = int(inf[0][:-1])
dic = {}
for i in range(num):
    dic[i] = inf[i+1][:-1]
new = sorted(dic.items(),key=lambda x:x[1])
for i in new:
    print(i[1])
发表于 2021-03-18 16:20:16 回复(0)
一堆人直接调用sort函数有个屁用
本质就是用快速排序,然后用比较字符串函数替换掉比较数字大小的部分
lists = []

def cmp(s1, s2):
    l = len(s2)
    if s1 == s2:
        return True
    for i, c1 in enumerate(s1):
        if i >= l:
            return 1
        c2 = s2[i]
        if c1 != c2:
            return ord(c1) - ord(c2)
    return len(s1) - len(s2)

def fun2(s1, s2):
    l = len(s2)
    if s1 == s2:
        return True
    for i, c1 in enumerate(s1):
        if i >= l:
            return False
        c2 = s2[i]
        if c1 > c2:
            return False
        elif c1 < c2:
            return True
    return False

def quick_sort(i, j):
    if i >= j:
        return lists
    low, high = i, j
    p = lists[i]
    while i<j:
        while i < j and cmp(lists[j], p) >= 0:
            j -= 1
        lists[i] = lists[j]
        while i < j and cmp(lists[i], p) <= 0:
            i += 1
        lists[j] = lists[i]
    lists[i] = p
    quick_sort(low, i-1)
    quick_sort(i+1, high)


while True:
    try:
        n = int(input())
        lists = []
        for i in range(n):
            lists.append(input())
        quick_sort(0, len(lists) - 1)
        for s in lists:
            print(s)
    except EOFError:
        break


发表于 2021-03-12 00:48:44 回复(0)
temp_list = []
while True:
    try:
        num = int(input())
        if 1 <= num and num <= 1000:
            for i in range(num):
                str_in = input()
                if len(str_in) <= 101: #为什么101可以通过100过不了
                    temp_list.append(str_in)
                else:pass
            temp_list.sort()
            for i in temp_list:
                print(i)
        else:
            pass


    except EOFError:
        break
是有一组测试里有一个超过100的字符串输入吗?
发表于 2021-02-26 21:54:30 回复(0)
num = input()
str1 = []
for i in range(int(num)):
    str1.append(input())
for i in sorted(str1):
    print(i)
发表于 2021-02-17 11:52:12 回复(0)
这道题的答案是不是有问题?要求是按照字典顺序输出,但是答案却是按照ASCII码的顺序输出的。按照字典输出不应该是key=str.lower么?
发表于 2021-02-15 19:19:06 回复(0)
n=int(input())
L=[]
for i in range(n):
    a=input()
    L.append(a)
print('\n'.join(sorted(L)))

发表于 2021-02-08 23:39:16 回复(0)
def istrcmp(a,b):
    for i in range(0,max(len(a),len(b))):
        if i>=len(a):
            return -1
        if i>=len(b):
            return 1
        if ord(a[i]) != ord(b[i]):
            return 1 if ord(a[i]) > ord(b[i]) else -1
    return 0
n = int(input())
d = []
for i in range(0,n):
    d.append(input())
for i in range(0,n):
    for j in range(i,n):
        if istrcmp(d[i],d[j])==1:
            t = d[i]
            d[i] = d[j]
            d[j] = t
for i in range(0,n):
    print(d[i])

    

超过0.02%的速度,超过93%的内存占用
发表于 2021-02-06 20:23:33 回复(0)
res = []
for i in range(int(input())):
    res.append(input())

for i in sorted(res):
    print(i)

发表于 2021-02-03 17:46:21 回复(0)
def main():
    word_count = int(input())
    words = []
    for i in range(word_count):
        words.append(input())
    for j in sorted(words):
        print(j)


if __name__ == "__main__":
    main()

发表于 2021-01-08 11:14:08 回复(0)
n=int(input())
s=[]
for i in range(n):
    s+=[input()]
s2=sorted(s)
for i in s2:
    print(i)
读完之后用内置的sorted函数排序一下,然后遍历输出
发表于 2020-12-26 23:15:17 回复(0)