先把每个版本号拆成两部分:
比较两个版本号时,按照题意分两步:
给出一系列软件版本号,请以升序对其排序。
主版本号是由“.”分割的多组数字组成,另外在正式的 release 版本之前还存在 beta 版本,会在主版本号后面加上 beta 版本号,beta 版本号和前面的主版本号以空格分割开。例:6.0.0.1 是 release 版本,6.0.0.1beta1 是其对应的第 1 个 beta 版本,6.0.0.1beta1 是其对应的第 2 个版本。
比较两个版本号时,规则如下:
先比较主版本号再比较 beta 版本号,主版本号越大的,版本号越大。
主版本号比较规则如下:
(1)从左往右的顺序依次比较由“.” 分割的每一组数字,同一位置,数字号越大,版本越大。
(2)若两个主版本号分割后数字不相等,且前几组数字比较均相等,则数字组数较多的更大,排在后面,例如 6.1.0.0 和 6.1 比较,6.1.0.0 数字更多,则 6.1.0.0 大于 6.1,排在后面。
3.主版本号相等时,再比较 beta 版本号,比较规则如下:
(1)beta版本号小于其对应的正式 release 版本号,例如 6.0 大于 6.0 beta1,排在后面。
(2)beta版本比对时,beta版本号越大,版本号越大,例如 6.0 beta2 大于 6.0 beta1,排在后面。
每个版本号由“.”分割的数字不超过 4 组,数字不存在先导 0,且不存在其他字符,数字范围在 [0−1000],有 beta 版本号时,beta 后面必带有数字。
第一行包含一个整数n,表示版本号字符串个数,n的范围为[0,100]。
接下来n行,每一行一个代表版本号的字符串。
升序排序后的版本号序列,每一行一个版本号。
输入
5
1.0.1.0
1.0.0.0 beta3
1.0.0.1 beta1
1.0.0.0 beta2
1.0.0.1
输出
1.0.0.0 beta1
1.0.0.0 beta2
1.0.0.1 beta3
1.0.0.1
1.0.1.0
说明
第一行输入 5 不是接下来有5个版本号字符串,接着 5 行 为 5 个版本号字符串。
输出位排序后的版本号排列,每行一个版本号
输入
2
6.0.0 beta1
6.0 beta3
输出
6.0 beta3
6.0.0 beta1
说明
第一行输入2表示接下来有2个版本号字符串,接着2行为版本号字符串。
输出为排序后的版本号序列,每行一个版本号。
由主版本和次版本相同的版本号序列,每行一个版本号。 例如,6.0与6.0相比,前两组数字相等,但是6.00数字段数更多,则6.0大于6.0,而主版本号越大的,对应版本号越大。 于是 6.0.0 beta1 大于 6.0 beta3。