Use recursion to compare the string before the '.' character. If either one of the strings reaches the end, add a "0" string and do one more recursion.
class Solution {
public:
int compareVersion(string version1, string version2) {
if(version1=="0"&&version2=="0")//both versions reach the end
return 0;
int num1,num2;
int i,j;
for(i=0;i<version1.size();i++)
if(version1[i]=='.')
break;
for(j=0;j<version2.size();j++)
if(version2[j]=='.')
break;
int res=compareString(version1.substr(0,i),version2.substr(0,j));
if(res)
return res;
string next1,next2;
if(i==version1.size())
next1="0";
else
next1=version1.substr(i+1);
if(j==version2.size())
next2="0";
else
next2=version2.substr(j+1);
return compareVersion(next1,next2);
}
int compareString(string a,string b)
{
int i;
for(i=0;i<a.size();i++)//delete 0s at the beginning of a
if(a[i]!='0')
break;
if(i==a.size())
a="0";
else
a=a.substr(i);
for(i=0;i<b.size();i++)//delete 0s at the beginning of b
if(b[i]!='0')
break;
if(i==b.size())
b="0";
else
b=b.substr(i);
if(a.size()>b.size())
return 1;
if(a.size()<b.size())
return -1;
for(i=0;i<a.size();i++)
{
if(a[i]>b[i])
return 1;
if(a[i]<b[i])
return -1;
}
return 0;
}
};