int compare(char* version1, char* version2 ) {
// write code here
char* p1 = version1, *p2 = version2, *pe1 = version1, *pe2 = version2;
int ret = 0;
while (*p1 != '\0' || *p2 != '\0') {
//截取.前字符
while (*p1 != '\0' && *p1 == '0' && *(p1 + 1) != '.') {
p1++;
}
while (*pe1 != '.' && *pe1 != '\0') {
pe1++;
}
while (*p2 != '\0' && *p2 == '0' && *(p2 + 1) != '.') {
p2++;
}
while (*pe2 != '.' && *pe2 != '\0') {
pe2++;
}
*pe1 = '\0';
*pe2 = '\0';
//比较截取的字符
//两个字符串都不为空的情况
if (*p1 != '\0' && *p2 != '\0') {
if ((pe1 - p1) > (pe2 - p2))//比较字符串长度
return 1;
if ((pe1 - p1) < (pe2 - p2))
return -1;
ret = strcmp(p1, p2);
if (ret > 0)
return 1;
if (ret < 0)
return -1;
}
//当其中一个字符串为空的情况
if (*p1 == '\0' && *p2 != '\0' && *p2 != '0')
return -1;
if (*p2 == '\0' && *p1 != '\0' && *p1 != '0')
return 1;
//指针移动到下一个.后
if (*p1 != '\0') {
pe1 = pe1 + 1;
p1 = pe1;
}
if (*p2 != '\0') {
pe2 = pe2 + 1;
p2 = pe2;
}
}
return 0;
}