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.
Example 1:
Input:version1
= "0.1",version2
= "1.1" Output: -1
Example 2:
Input:version1
= "1.0.1",version2
= "1" Output: 1
Example 3:
Input:version1
= "7.5.2.4",version2
= "7.5.3" Output: -1
class Solution {
int fun(String s)
{
int ans=0;
int mici=1;
for(int i=s.length()-1;i>=0;i--)
{
ans+=(s.charAt(i)-'0')*mici;
mici*=10;
}
return ans;
}
public int compareVersion(String version1, String version2)
{
int ans=0;
if(version1.equals(version2))
{
return 0;
}
String []v1=version1.split("\\.");
String []v2=version2.split("\\.");
int length_max=v1.length>v2.length?v1.length:v2.length;
int []arr1=new int[length_max];
int []arr2=new int[length_max];
for(int i=0;i<length_max;i++)
{
if(v1.length-1<i)
{
arr1[i]=0;
}
else
{
arr1[i]=fun(v1[i]);
}
}
for(int i=0;i<length_max;i++)
{
if(v2.length-1<i)
{
arr2[i]=0;
}
else
{
arr2[i]=fun(v2[i]);
}
}
for(int i=0;i<length_max;i++)
{
if(arr1[i]>arr2[i])
{
return 1;
}
else if(arr1[i]<arr2[i])
{
return -1;
}
}
return ans;
}
}