描述
牛客项目发布项目版本时会有版本号,比如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.
public class CompareVersion {
// 这是我自己写的,又没写出来。没有思路
public int compare (String version1, String version2) {
// write code here
int v1 = 0;
int v2 = 0;
while(v1<version1.length() && v2<version2.length()){
char c1 = version1.charAt(v1);
char c2 = version2.charAt(v2);
if(c1 == c2){
v1++;
v2++;
}else if(c1 == '0'){
v1++;
}else if(c2 == '0'){
v2++;
}
}
return 0;
}
static int compareVersion(String version1, String version2) {
int c1 = version1.length(),c2 = version2.length();
int i = 0, j = 0;
// c1表示version1的长度
// c2表示version2的长度
while(i<c1 || j<c2){
int num1 = 0, num2 = 0; // 每循环一次,都要重新置为0
while(i<c1 && version1.charAt(i) != '.'){ // 判断 version1.charAt(i)是否等于 '.'
num1 = 10 * num1 + version1.charAt(i++) - '0';
}
while(j<c2 && version2.charAt(j) != '.'){ // 判断 version2.charAt(i)是否等于 '.'
num2 = 10 * num2 + version2.charAt(j++) - '0';
}
if(num1 > num2){
return 1;
}else if(num1 < num2){
return -1;
}
i++;
j++;
}
return 0;
}
public static void main(String[] args) {
String v1 = "0.226";
String v2 = "0.36";
v1 = "1.1";
v2 = "1.1.0.9";
//v1 = "2.0.1";
//v2 = "2";
int compare = compareVersion(v1, v2);
System.out.println(compare);
}
}