描述
牛客项目发布项目版本时会有版本号,比如1.02.11,2.14.4等等
现在给你2个版本号version1和version2,请你比较他们的大小
版本号是由修订号组成,修订号与修订号之间由一个"."连接。1个修订号可能有多位数字组成,修订号可能包含前导0,且是合法的。例如,1.02.11,0.1,0.2都是合法的版本号
每个版本号至少包含1个修订号。
修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订号下标为1,以此类推。
比较规则:
一. 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较忽略任何前导零后的整数值。比如"0.1"和"0.01"的版本号是相等的
二. 如果版本号没有指定某个下标处的修订号,则该修订号视为0。例如,"1.1"的版本号小于"1.1.1"。因为"1.1"的版本号相当于"1.1.0",第3位修订号的下标为0,小于1
三. version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0.
import java.util.*;
import java.math.BigInteger;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
public int compare (String version1, String version2) {
// write code here
String[] num1List = version1.split("\\.");
String[] num2List = version2.split("\\.");
int len = Math.min(num1List.length,num2List.length);
//先比较公共部分
for(int i = 0;i<len;i++){
//long int目前都不满足数字长度要求,使用BigInteger
BigInteger num1 = new BigInteger(num1List[i]);
BigInteger num2 = new BigInteger(num2List[i]);
if(num1.compareTo(num2) == 0){
continue;
}else if(num1.compareTo(num2)<0){
return -1;
}else{
return 1;
}
}
//比较多出来部分
if(num1List.length>num2List.length){
for(int i = len;i<num1List.length;i++){
BigInteger num1 = new BigInteger(num1List[i]);
if(num1.compareTo(new BigInteger("0")) != 0){
return 1;
}
}
}else if(num1List.length<num2List.length){
for(int i = len;i<num2List.length;i++){
BigInteger num2 = new BigInteger(num2List[i]);
if(num2.compareTo(new BigInteger("0")) != 0){
return -1;
}
}
}
return 0 ;
}
}
网友评论