Leetcode 165. Compare Version Numbers

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;
    }
}

猜你喜欢

转载自blog.csdn.net/BJUT_bluecat/article/details/81081110
今日推荐