从后往前看自己做的题真觉得自己愚蠢

代码如下:

s = input()
n = int(input())

s_list = []
i = 0
max_k = 0
while i < n:
    ans = input()
    k = 0
    
    if len(ans) != len(s):
        k = 0
    else:
        j = 0
        while j < len(s):
            if s[j] == ans[j]:
                k += 1
            j += 1
        max_k = max(max_k, k)
    
    s_list.append([ans, k])
    i += 1

ans_list = []
for row in s_list:
    if row[1] == max_k:
        ans_list.append(row[0])
        
ans_list.sort()
for ans in ans_list:
    print(ans)

s_list 是二维列表,用于存放 ans 与其对应的 k
k 的定义是 sum / b,当 k 不为零时长度永远正确,只需存放与 s 对应位置字母相同个数即可
max_k用于存放最大的 k
边输入边处理巴拉巴拉巴拉

ans_list 用于存放 k 值最大的字符串 ans 全部输入后,遍历 s_list 寻找 k 最大的字符串并存入 ans_list
然后对 ans_list 进行排序,确保字典序(Python永远滴神)
最后输出