zoukankan      html  css  js  c++  java
  • LeetCode165. 比较版本号

    根据题意,用'.'划分出两个版本的每个子版本号,从左到右逐个比较即可,如果某个版本的子版本号个数比另一个多,则子版本较少的那个版本用0表示子版本,这样就可以一直比较两个版本的所有子版本了。

    划分子版本可以用双指针,划分出的子版本存到一个数组中,都划分好后就得到两个分别存放两个版本的子版本的数组,然后对数组逐个进行比较,如果相等就往后,否则返回结果。

    如果某个数组大于另一个数组,则较小的另一个数组剩下的部分用0和较大的数组的当前元素比较(表示剩下的子版本都是0),一直比较下去直到比较出大小或者两个数组都结束了,都结束了就返回0,说明两个版本号是相同的。

    代码如下:

    class Solution {
    public:
        int compareVersion(string version1, string version2) {
            vector<int> v1, v2;
            int i = 0;
            for(; i < version1.size(); ++i) {
                int j = i;
                while(j < version1.size() && version1[j] != '.') {            //双指针划分出子版本号,存放到数组v1中
                    ++j;
                }
                string subVer = version1.substr(i, j - i);
                v1.push_back(atoi(subVer.c_str()));
                i = j;
            }
            for(i = 0; i <version2.size(); ++i) {
                int j = i;
                while(j < version2.size() && version2[j] != '.') {
                    ++j;
                }
                string subVer = version2.substr(i, j - i);
                v2.push_back(atoi(subVer.c_str()));
                i = j;
            }
            for(int i = 0; i < min(v1.size(), v2.size()); ++i) {
                if(v1[i] > v2[i]) {
                    return 1;
                } else if(v1[i] < v2[i]) {
                    return -1;
                }
            }
            if(v1.size() < v2.size()) {
                for(int i = v1.size(); i < v2.size(); ++i) {
                    if(0 < v2[i]) {                              //如果v1的大小小于v2的大小,则v1不足的部分用0和v2[i]比较,表示后面的子版本号都是0
                        return -1;
                    }
                }
            }
            if(v1.size() > v2.size()) {
                for(int i = v2.size(); i < v1.size(); ++i) {
                    if(v1[i] > 0) {
                        return 1;
                    }
                }
            }
            return 0;
        }
    };
    
  • 相关阅读:
    权限管理(java+struts2(自定义标签)实现)--------->全代码演示
    颜色的几个术语和属性
    颜色的不同表达方式
    bootstrap作为mixin库的应用模式
    -webkit-min-device-pixel-ratio: 2是什么意思?
    如何在前端项目中引用bootstrap less?
    js闭包??
    win 运行
    win 2016 添加系统组件注册表,
    C# window服务操作
  • 原文地址:https://www.cnblogs.com/linrj/p/13445406.html
Copyright © 2011-2022 走看看