美文网首页
[LeetCode]165. Compare Version N

[LeetCode]165. Compare Version N

作者: Eazow | 来源:发表于2016-05-26 15:37 被阅读58次

    Compare two version numbers version1 and version2.

    If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

    You may assume that the version strings are non-empty and contain only digits and the . character.

    The . character does not represent a decimal point and is used to separate number sequences.

    For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.

    Here is an example of version numbers ordering:

    0.1 < 1.1 < 1.2 < 13.37
    

    方法

    遍历2个字符串,获取版本号,遇到.时停止,比较版本号。如果版本号不同,返回1或-1;如果相同,继续遍历,如果其中1个字符串到了'\0', 继续遍历第2个字符串,直到2个字符串都遍历到了'\0'。

    c代码

    #include <assert.h>
    #include <string.h>
    
    int compareVersion(char* version1, char* version2) {
        int versionInt1, versionInt2;
        while(*version1!='\0' || *version2!='\0') {
            versionInt1 = 0;
            while(*version1 != '.' && *version1!='\0') {
                versionInt1 = versionInt1*10+*version1-'0';
                version1++;
            }
            if(*version1 == '.')
                version1++;
            versionInt2 = 0;
            while(*version2 != '.' && *version2!='\0') {
                versionInt2 = versionInt2*10+*version2-'0';
                version2++;
            }
            if(*version2 == '.')
                version2++;
            if(versionInt1 > versionInt2)
                return 1;
            else if(versionInt1 < versionInt2)
                return -1;
        }
        return 0;
    }
    
    int main() {
        assert(compareVersion("13.37", "13.37.2") == -1);
    
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:[LeetCode]165. Compare Version N

          本文链接:https://www.haomeiwen.com/subject/nxlxdttx.html