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; }