题解 | #比较版本号#

比较版本号

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;
    }
};


全部评论

相关推荐

小火柴燃烧吧:接啊,接了之后反手在咸鱼找个大学生搞一下,量大从优
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务