首页 > 试题广场 >

字符串排序

[编程题]字符串排序
  • 热度指数:580386 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的由大小写字母混合构成的 n 个单词,输出按字典序从小到大排序后的结果。

【名词解释】
\hspace{15pt}从字符串的第一个字符开始逐个比较,直至发现第一个不同的位置,比较这个位置字符的 Ascii 码,Ascii 码较小(\texttt{`A'} \lt \texttt{`B'} \cdots \lt \texttt{`Z'} \lt \texttt{`a'} \lt \cdots \lt \texttt{`z'})的字符串字典序也较小。

输入描述:
\hspace{15pt}第一行输入一个整数 n \left( 1 \leqq n \leqq 10^3 \right) 代表给定的单词个数。
\hspace{15pt}此后 n 行,每行输入一个长度 1 \leqq {\rm length}(s) \leqq 100,由大小写字母构成的字符串 s,代表一个单词。


输出描述:
\hspace{15pt}一共 n 行,每行输出一个字符串,代表排序后的结果。第一行输出字典序最小的单词。
示例1

输入

11
cap
to
cat
card
two
too
up
boat
boot
AA
Aa

输出

AA
Aa
boat
boot
cap
card
cat
to
too
two
up
n = int(input())
record = []
for _ in range(n):
    word = input()
    record.append(word)
for key in sorted(record):
    print(key)

发表于 2026-02-08 11:33:34 回复(0)
数组写的,示例是已经过了,但是总感觉哪里有些问题,请大家帮忙看一下。
n = int(input())
list1 = []
for i in range(n):
    str = input()
    list1.append(str)

for result in sorted(list1):
    print(result)
发表于 2026-01-14 15:47:06 回复(0)
def compare(word1,word2):
    s_size = len(word1)
    other_size = len(word2)
    min_size = min(s_size,other_size)
    for i in range(min_size):
        if ord(word1[i]) < ord(word2[i]):
            return True 
        elif ord(word1[i]) > ord(word2[i]):
            return False 
        else:
            pass 
    else:
        return True if min_size == s_size else False 
             
n = int(input())
i = 0
words = []
while i < n:
    words.append(input())
    i += 1

result = []
result.append(words[0])

for key,word in enumerate(words):
    if key >= 1:
        for i in range(len(result)):
            if compare(word,result[i]): # word小
                result.insert(i,word)
                break
            else:
                pass 
        else:
            result.append(word)
print("\n".join(result))

发表于 2025-11-24 22:08:29 回复(0)
n=int(input().strip())
words=[]
for item in range(n):
    s=input().strip()
    words.append(s)
words.sort()
for word in words:
    print(word)
发表于 2025-11-21 15:34:52 回复(0)
n = int(input())
c =[]
for i in range(n):
    c.append(input())
c = sorted(c)
for j in c:
    print(j)
发表于 2025-06-21 16:15:06 回复(0)
n = int(input())  # 单词个数
word_list = []

for i in range(n):
    word_list.append(input())

print('\n'.join(sorted(word_list)))

发表于 2025-06-19 21:19:15 回复(0)
萌新求教,看了大佬们的解法,想了解一下,第一行输入的整数,在最后的结果是哪一步被去掉了呢
发表于 2025-05-25 18:47:43 回复(2)
words = []

for _ in range(int(input())):
    words.append(input())

words.sort()

print("\n".join(words))
发表于 2025-05-09 17:18:11 回复(0)
import sys

n = int(input())
output = []
for i in range(n):
    output.append(input())
output.sort()
for i in range(n):
    print(output[i])
发表于 2025-04-09 22:01:22 回复(0)
n = int(input())

ls = []
for i in range(n):
    ls.append(input())

d = {}
for i in ls:
    d[i] = []
    for j in i:
        d[i].append(ord(j))

for i in range(n):
    for j in range(n-i-1):
        asc_j = d[ls[j]]
        asc_j1 = d[ls[j+1]]
        min_len = min(len(asc_j), len(asc_j1))
        res = 0
        for h in range(min_len):
            if asc_j[h] != asc_j1[h]:
                res = asc_j[h] - asc_j1[h]
                break
        if res == 0:
            res = len(asc_j) - len(asc_j1)

        if res > 0:
            ls[j], ls[j+1] = ls[j+1], ls[j]

for w in ls:
    print(w)

发表于 2025-04-07 11:23:32 回复(0)
n=int(input());mm=[]
for i in range(n):
    mm.append(input())
mm=sorted(mm)
for i in range(n):
    print(mm[i])

发表于 2025-03-24 21:11:55 回复(0)
n=int(input())
i=0
l=[]
while i<n:
    l.append(input())
    i+=1
for j in sorted(l):
    print(j)
发表于 2025-03-05 16:40:19 回复(0)
一开始不知道可以sort字符串,写了半年去,我说简单题怎么我写那么多
from re import I
import sys

record = []
data_dic = {}
for line in sys.stdin:
    record.append(line.strip())
try:
    n = record[0]
    data = record[1:]
    max_len = 0
    for i in data:
        if len(i)>max_len:
            max_len = len(i)
    max_len = 3*max_len
    for i in data:
        num = 0
        count = 0
        for j in i:
            num += ord(j)*(10**(max_len-count))
            count +=3
        data_dic[i] = num
    res_dic = dict(sorted(data_dic.items(),key = lambda item:item[1],reverse = True))
    for k in range(len(res_dic)):
        print(res_dic.popitem()[0])
except:
    None


发表于 2025-02-19 18:21:29 回复(0)
n = eval(input())
ls = []
for i in range(n):
    ls.append(input())
for j in sorted(ls):
    print(j)

发表于 2025-02-19 11:36:29 回复(0)
n = input()
s = []
for i in range(int(n)):
    s.append(input().strip())
s.sort()
for i in s:
    print(i)
发表于 2025-02-16 12:54:32 回复(0)
print(*sorted([input() for _ in range(int(input()))]), sep='\n')
发表于 2025-01-14 16:15:35 回复(0)
"""
————————————————
【描述】
对于给定的由大小写字母混合构成的 n 个单词,输出按 “字典序” 从小到大排序后的结果。
从字符串的第一个字符开始逐个比较,直到找到第一个不同的位置,通过比较这个位置字符对应的 Ascii 码,得出字符串的大小,称为字典序比较。
【输入描述】
第一行输入一个整数 n(1≦n≦1000) 代表给定的单词个数。
此后 n 行,每行输入一个长度 1≦length(s)≦100 ,由大小写字母混合构成的字符串 s ,代表一个单词。
【输出描述】
输出 n 行,每行输出一个字符串,代表排序后的结果。第一行输出字典序最小的单词。
————————————————
"""

# 单词比较方法
def sort_word_by_alphabet(word_a, word_b):
    i = 0
    max_len = max(len(word_a), len(word_b))
    for i in range(0, max_len):
        alphabet_a = word_a[i] if i < len(word_a) else "0"
        alphabet_b = word_b[i] if i < len(word_b) else "0"
        if alphabet_a > alphabet_b:
            return 1
        elif alphabet_a < alphabet_b:
            return -1
    return 0

# 单词列表排序
def sort_word_list(word_list):
    if len(word_list) <= 1:
        return word_list
    else:
        reference_word = word_list[0]
        del word_list[0]
        list_left = []
        list_right = []
        for word in word_list:
            sort_result = sort_word_by_alphabet(word, reference_word)
            if sort_result >= 0:
                list_right.append(word)
            elif sort_result < 0:
                list_left.append(word)
        return sort_word_list(list_left) + [reference_word] + sort_word_list(list_right)

# 主函数
def main():
    word_list = []
    word_list_len = int(input())
    for i in range(0, word_list_len):
        word = input()
        word_list.append(word)
    sorted_word_list = sort_word_list(word_list)

    for word in sorted_word_list:
        print(word)

main()


发表于 2025-01-05 20:29:36 回复(0)
n = int(input())
li = []
for i in range(n) :
    li.append(input())
li.sort()
for i in li:
    print(i)

发表于 2024-12-23 12:14:59 回复(0)
n = int(input())
lis = []
for i in range(n):
    lis.append(input())
lis = sorted(lis)
for i in lis:
    print(i)
发表于 2024-11-24 13:00:07 回复(0)
num = int(input())
list_0 = []
for _ in range(num):
    list_0.append(input())
list_0.sort()
for item in list_0:
    print(item)

发表于 2024-10-31 21:24:38 回复(0)

问题信息

难度:
71条回答 112577浏览

热门推荐

通过挑战的用户

查看代码
字符串排序