题解 | #比较版本号#

比较版本号

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

经典的字符串分割数字类问题:
class Solution {
public:
    int compare(string version1, string version2) {
        // write code here
        int i, j;
        int v1, v2;
        for(i = 0, j = 0; i < version1.size() && j < version2.size(); i ++, j ++){
            char c1 = version1[i], c2 = version2[j];
            if(isdigit(c1)){
                int x = 0, k = i;
                while(k < version1.size() && isdigit(version1[k])) x = x * 10 + version1[k ++] - '0';
                v1 = x;
                i = k - 1;
            }
            if(isdigit(c2)){
                int x = 0, k = j;
                while(k < version2.size() && isdigit(version2[k])) x = x * 10 + version2[k ++] - '0';
                v2 = x;
                j = k - 1;
            }
            //cout << v1 << " " << v2 << endl;
            if(v1 > v2) return 1;
            else if(v1 < v2) return -1;
        }
        for(; i < version1.size(); i ++) if(version1[i] != '.' && version1[i] > '0')
            return 1;
        for(; j < version2.size(); j ++) if(version2[j] != '.' && version2[j] > '0')
            return 2;
        return 0;
    }
};


#美团暑期实习#
全部评论

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-15 14:22
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务