165. Compare Version Numbers

来源:互联网 发布:linux sort 0 编辑:程序博客网 时间:2024/06/05 18:31

这道题是比较版本号大小。

注意,版本号并不是一个小数这么简单,因为小数点不一定只有一个。1.1.1也是版本号。

方法是,相同小数点之间的数转换成int来比较。如果一个string已经遍历完了,另一个还没有遍历完,那么atoi函数不会出错,因为atoi("")返回是0;

这道题新建了两个string来存放当前要比较的两个数,比substr好用,可以省些细节上的错误。

class Solution {public:    int compareVersion(string version1, string version2) {        int n1 = version1.size(), n2 = version2.size();        int i = 0, j = 0, d1 = 0, d2 = 0;        string v1, v2;        while(i < n1 || j < n2){            while(i < n1 && version1[i] != '.'){                v1.push_back(version1[i]);                i++;            }            d1 = atoi(v1.c_str());            while(j < n2 && version2[j] != '.'){                v2.push_back(version2[j]);                j++;            }            d2 = atoi(v2.c_str());            if(d1 > d2) return -1;            v1.clear(); v2.clear();            ++i; ++j;        }        return 0;    }};


原创粉丝点击