把每个文件夹名从左到右切分成一串“比较单元”:
ASCII('A'<'Z'<'a'<'z')比较0)然后用“自然排序”的比较方法从左到右逐单元比较:
文件夹命名经常会使用字符+数字混合命名,为了方便查看,希望文件夹排序时可以按字符序+数字值综合排序。 给定n个文件夹名称,每个文件夹名称为v[i],请按照字符从小到大(a−zA−Z)及数字值从小到大的顺序排序,输出排序后的文件夹名称。
排序规则:
1.从左到右依次比较,区分大小写,字母从a−zA−Z顺序排列
2.连续的数字字符整体转为整数后按从小到大排列,如001转为数字1后排序
3.字母和数字比较时数字在前,例,'testcase1'和'testcasefail'排序时'testcase1'在前
4.如一个文件夹名称是另一个文件夹名称的前缀子串,则长度短的子串排在前,例:'testcase,testcase001'排序时'testcase'在前
5.两个文件夹名称排序相同时,不改变输入顺序,这里相同包括数字字符不同但转成整数后值相同,例:'testcase1'和'testcase001'排序时二者相同,保持输入顺序,'testcase1'在前
1,第1行:n,代表输入文件夹名称个数,范围[1,100]
2.第2行:v[0]代表第1个文件夹名称,名称只包合大小写字母和数字字符,长度[1,127],连续的数字字符数量不超过9
3.第n+1行:v[n−1], 代表第n个文件夹名称,名称只包含大小写字母和数字字符,长度[1,127],连续的数字字符数量不超过9
按行输出排序后的文件夹名称
输入
3
ts1tc1
ts1tc01
ts0tc1
输出
ts0tc1
ts1tc1
ts1tc01
说明
第1行输入3,表示有3个文件夹
第3行起分别输入3个文件夹名称'ts0tc1','ts1tc1','ts1tc01'排序时'ts'部分一致,后续'0' '1' '1' 转为数字对应0,1,1,按规则排序,'ts0tc1'排第1,'ts1tc1'排经2,'ts1tc01'排第3
输入
2
testcase10
testcase9
输出
testcase9
testcase10
说明
第1行输入2,表示有2个文件夹
第2行起分别输入2个文件夹名称'testcase10','testcase9',排序时'testcase' 部分一致,然后看最后的数字部分,9<10,按数字由小到大排序,'testcase9'在前
输出:
testcase9
testcase10
输入
3
ts09sc1
ts01tc1
ts010tc12
输出
ts01tc1
ts09tc1
ts010tc12