码迷,mamicode.com
首页 > 其他好文 > 详细

Compare Version Numbers

时间:2014-12-18 21:59:51      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   io   color   os   sp   for   on   

Compare two version numbers version1 and version1.
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

C++实现代码:

#include<iostream>
#include<vector>
#include<string>
#include<sstream>
#include<cstdlib>
using namespace std;

class Solution {
public:
    int compareVersion(string version1, string version2) {
        istringstream is(version1);
        istringstream iss(version2);
        vector<string> vec1;
        vector<string> vec2;
        string tmp;
        while(getline(is,tmp,.))
        {
            vec1.push_back(tmp);
        }
        while(getline(iss,tmp,.))
        {
            vec2.push_back(tmp);
        }
        int len1=vec1.size();
        int len2=vec2.size();
        int i=0,j=0;
        while(i!=len1&&j!=len2)
        {
            if(atoi(vec1[i].c_str())<atoi(vec2[i].c_str()))
                return -1;
            else if(atoi(vec1[i].c_str())>atoi(vec2[i].c_str()))
                return 1;
            i++;
            j++;
        }
        if(i==len1&&j==len2)
            return 0;
        while(i!=len1)
        {
            if(atoi(vec1[i].c_str())!=0)
                return 1;
            i++;
        }
        while(j!=len2)
        {
            if(atoi(vec2[j].c_str())!=0)
                return -1;
            j++;
        }
        return 0;
    }
};

int main()
{
    string s1="01.23.0.0";
    string s2="01.23";
    Solution s;
    cout<<s.compareVersion(s1,s2)<<endl;
}

 

Compare Version Numbers

标签:style   blog   ar   io   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/wuchanming/p/4172654.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!