/**------------------------------------
* 日期:2015-03-09
* 作者:pqleo
* 题目: 165 Compare Version Numbers
* 网址:https://leetcode.com/problems/compare-version-numbers/
* 结果:AC
* 来源:LeetCode
* 博客:https://github.com/pq1949/Myleetcode/blob/master/Compare%20Version%20Numbers
---------------------------------------**/
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
class Solution {
public:
int compareVersion(string version1, string version2) {
vector<int> vec1,vec2;
vec1 = spiltStringToInt(version1,'.',vec1);
vec2 = spiltStringToInt(version2,'.',vec2);
int len1 = vec1.size();
int len2 = vec2.size();
int i =0, j =0;
while(i < len1 && j <len2){
if(vec1[i] < vec2[j])return -1;
else if(vec1[i] > vec2[i] )return 1;
i++;j++;
}//while
if(len1 == len2 )return 0;
else if(len1 > len2) return vec1[i] ? 1:0;
else return vec2[j] ? -1:0;
}
vector<int>& spiltStringToInt(const string & s,char del,vector<int> &res){
stringstream ss(s);
string tem;
while(getline(ss,tem,del)){
res.push_back(atoi(tem.c_str()));
}
return res;
}
};
int main()
{
Solution s;
cout<<s.compareVersion("1","1.0")<<endl;;
getchar();
return 0;
}
解法2
class Solution {
public:
int compareVersion(string version1, string version2) {
int len1 = version1.length();
int len2 = version2.length();
for(int i = 0,j = 0; i < len1 || j < len2; ++i, ++j)
{
int sum1 = 0, sum2 = 0;
while(i < len1 && version1[i] != '.')sum1 = sum1 * 10 + version1[i] - '0',i++;
while(j < len2 && version2[j] != '.')sum2 = sum2 * 10 + version2[j] - '0',j++;
if(sum1 > sum2)return 1;
else if(sum1 < sum2)return -1;
}
return 0;
}
};