165.LeetCode Compare Version Numbers(easy)[字符串处理 分割与int转换]

来源:互联网 发布:人工智能爱理酱本子 编辑:程序博客网 时间:2024/05/23 19:18

Compare two version numbers version1 and version2.
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
解题思路:首先对每个string按照‘.’分割出来存放在两个vector里面,然后需要把不同长度的部分补0,然后对vector遍历,顺序比较,当能比较出大小时给出判断。
class Solution {public:    void  splitVersion(string version1,vector<int> &num1)    {        int index = 0;        int start = 0;        while(version1[index] != '\0')        {            if(version1[index] == '.')            {                string temp = version1.substr(start,index-start);                stringstream ss;                ss<<temp;                int d;                ss>>d;                num1.push_back(d);                start = index+1;            }            index++;        }         string temp = version1.substr(start,index-start);         stringstream ss;         ss<<temp;         int d;         ss>>d;         num1.push_back(d);    }    int compareVersion(string version1, string version2) {        vector<int> num1;        vector<int> num2;        splitVersion(version1,num1);        splitVersion(version2,num2);        int i = 0,j = 0;        int len1 = num1.size(),len2 = num2.size();        if(len1>len2)        {            for(int i=1;i<=len1-len2;i++)               num2.push_back(0);        }        if(len1<len2)        {            for(int i=1;i<=len2-len1;i++)               num1.push_back(0);        }        while(i<num1.size()&&j<num2.size())        {            if(num1[i]>num2[j])               return 1;            else if(num1[i]<num2[j])               return -1;            else             {                 i++;                 j++;             }        }        return 0;    }};


0 0
原创粉丝点击