题解 | #比较版本号#

比较版本号

https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7

C语言版本

int compare(char* version1, char* version2 ) {

    // write code here

    int tmp1=0, tmp2=0;                 //用来装每个.之间的数值

    char *p1 = version1, *p2 = version2;    

    while(*p1 != '\0' || *p2 != '\0'){  //两个版本的指针其中之一不为空则继续循环。

        while(*p1 == '0')p1++;          //去除前导0

        while(*p2 == '0')p2++;

        while(*p1 != '\0' && *p1 != '.'){   //如果当前没到末尾,且不为.

            tmp1 *= 10;                     //逐个获取组合成修订号

            tmp1 += (*p1 - '0');

            p1++;

        }

        while(*p2 != '\0' && *p2 != '.'){

            tmp2 *= 10;

            tmp2 += (*p2 - '0');

            p2++;

        }

        if(*p1 != '\0'){                //如果没到末尾,则指针+1,用来跳过.

            p1++;

        }

        if(*p2 != '\0'){

            p2++;

        }

       

        if(tmp1 > tmp2){            //比较修订号

            return 1;

        }else if(tmp1 < tmp2){

            return -1;

        }else{                      //如果当前修订号相等,则清空tmp,进入下一次循环

            tmp1 = 0, tmp2 = 0;

            continue;

        }

    }

    return 0;       //如果版本号都遍历忘了,表示两个版本号相等,返回0;

}

全部评论

相关推荐

LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司7个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务