题解 | #比较版本号#

比较版本号

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

将版本号转成vector去做来得更加方便与直接,code say。
class Solution {
public:
    vector<int> stringtoVector(string& v)
    {
        if(v.size() == 0) return {};
        vector<int> res;
        int temp = -2;
        for(int i = 0; i < v.size(); i++)
        {
            if(v[i] == '.')  
            {
                if(temp != -2) res.push_back(temp);
                temp = -2;
                res.push_back(-1);
            }
            else if(v[i] >= '0' && v[i] <= '9') 
            {
                if(temp == -2) temp = 0;
                temp = temp*10 + v[i] - '0';
            }
            else{}
        }
        if(temp != -2 && temp != 0) res.push_back(temp);
        temp = -2;
        return res;
        
    }
    int compare(string version1, string version2) {
        

        int iver1 = 0;
        int iver2 = 0;
        //转换成数组去做,.可以忽略或者按-1去写
        vector<int> m_vecVer1 = stringtoVector(version1);
        vector<int> m_vecVer2 = stringtoVector(version2);
        //确保至少有一个达到了数组边界
        while(iver1 < m_vecVer1.size() && iver2 < m_vecVer2.size())
        {
            if(m_vecVer1[iver1] < m_vecVer2[iver2])
            {
                return -1;
            }
            else if(m_vecVer1[iver1] > m_vecVer2[iver2])
            {
                return 1;
            }
            else if(m_vecVer1[iver1] == m_vecVer2[iver2])
            {
                iver1++;
                iver2++;
            }
            else{}
        }
        //对于没有达到数组边界的,直接与0比较即可,若是v1的值大于0,则返回1
        if(iver1 < m_vecVer1.size() - 1)
        {
            for(int i = iver1 + 1; i < m_vecVer1.size(); i++)
            {
                if(m_vecVer1[i] > 0) return 1;
            }
        }
        
        if(iver2 < m_vecVer2.size() - 1)
        {
            for(int i = iver2 + 1; i < m_vecVer2.size(); i++)
            {
                if(m_vecVer2[i] > 0) return -1;
            }
        }
        //当所有条件都不满足时,说明该版本号码是保持一致的
        return 0;
    }
};


全部评论

相关推荐

头像
03-14 11:23
已编辑
北京邮电大学 管理咨询
211勇闯初创小公司头破血流系列3这件事不是发生在我身上的,但前同事们参与创作的积极性空前高涨,为了习惯,还是都采用第一人称的视角来看这出大戏。有一天老板在我们的眼皮底下接了一个电话,最终敲定了去北京出差的时间,下周一。他得意洋洋地说,这单下来保底五百万的流水,如果成了,我们都能得到五位数的提成。这对于一群刚上班的人来说是天大的诱惑,我们经历了周末的无偿加班,把他去北京所需要的文件都准备好了。只是在去北京的周一当天,老板睡过头了。整个上午都没见他的踪影,给他发文件也不会,打电话问问题也不接,直到中午才姗姗来迟。当然,这只是拉开了这场恐怖出差的序幕。只见他来了也不紧不慢的,手指在办公室转了一圈,...
姜大力:补充: 1.五百万的单子根本没有五百万,只是过去展示拼装的产品并简单考察。该项目只是竞标,项目内容是商业街区改造; 2.决策是当天上午10点半左右老板珊珊来迟后突发奇想去北京,中午1点在催促下着急出发,没有任何出差补助; 3.出发之前已经知道进京证不好使了,但还是执意要开车去; 4.实习生实打实连续开了***小事车,非常辛苦,工资在转正后只有两千五; (有疑问会继续补充)
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-31 04:00
神哥不得了:首先我就是在成都,成都的互联网格外的卷,如果是凭现在的简历的话很难找到大厂,建议再添加一个高质量的项目上去,另外专业技能的话最好是超过每一条的一半
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务