class Solution {
public:
int compareVersion(string version1, string version2) {
int v1, v2, t;
string s1, s2;
v1 = version1.find('.');
v2 = version2.find('.');
while(v1 != -1 && v2 != -1)
{
s1 = version1.substr(0, v1);
s2 = version2.substr(0, v2);
s1 = f(s1, '0');
s2 = f(s2, '0');
t = compare(s1, s2);
if(t != 0)
return t;
version1 = version1.erase(0, v1+1);
version2 = version2.erase(0, v2+1);
v1 = version1.find('.');
v2 = version2.find('.');
}
if(v1 == -1 && v2 == -1)
return compare(f(version1, '0'), f(version2, '0'));
else if(v1 == -1)
{
s2 = version2.substr(0, v2);
t = compare(f(version1, '0'), f(s2, '0'));
if(t != 0)
return t;
else
{
version2 = version2.erase(0, v2+1);
version2 = ff(version2, '.');
version2 = ff(version2, '0');
if(version2 == "")
return 0;
else
return -1;
}
}
else
{
s1 = version1.substr(0, v1);
t = compare(f(s1, '0'), f(version2, '0'));
if(t != 0)
return t;
else
{
version1 = version1.erase(0, v1+1);
version1 = ff(version1, '.');
version1 = ff(version1, '0');
if(version1 == "")
return 0;
else
return 1;
}
}
}
string f(string s, char t)
{
int i = 0;
while(s[i] == t && i < s.size())
{
s.erase(i, 1);
}
return s;
}
string ff(string s, char t)
{
int i = 0;
while(i < s.size())
{
if(s[i] == t)
{
s.erase(i, 1);
i--;
}
i++;
}
return s;
}
int compare(string s1, string s2)
{
if(s1.size() > s2.size())
return 1;
else if(s1.size() < s2.size())
return -1;
else
{
for(int i = 0; i < s1.size(); i++)
{
if(s1[i] > s2[i])
return 1;
if(s1[i] < s2[i])
return -1;
}
return 0;
}
}
};