Leetcode165. Compare Version Numbers

来源:互联网 发布:网吧电脑保护软件 编辑:程序博客网 时间:2024/05/22 06:38

原题
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.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37
大意
比较版本的大小,版本是以字符串的形式给出来的,包含字母和.
思路
1、想把字符串中的.都除去,然后转化为数值,比较数值的大小,但是就有可能出现越界的情况。
2、使用函数把.除去,转化为数组,然后比较两个数组中元素的大小
代码

public class Solution {    public int compareVersion(String version1, String version2) {    //注意这里的函数version1.split,.是转义字符,所以使用"\\."        String [] v1=version1.split("\\.");        String [] v2=version2.split("\\.");        int i=0;        int j=0;        while(i<v1.length&&j<v2.length){        //v1数组中的元素是字符,要转化为整数进行比较            if(Integer.parseInt(v1[i])==Integer.parseInt(v2[j])){                i++;                j++;            }else if (Integer.parseInt(v1[i])>Integer.parseInt(v2[j])) {                return 1;            }else {                return -1;            }           }        //如果一个达到了数组的长度,但是不确定另一个数组在这个长度之后是都为0还是有数值。就是类似于1.2.3.0和1.2.3是一个版本        if(i!=v1.length)        {            for(;i<v1.length;i++){                 if(Integer.parseInt(v1[i])!=0)                 return 1;            }        }        if(j!=v2.length)        {            for(;j<v2.length;j++){                 if(Integer.parseInt(v2[j])!=0)                 return -1;            }        }        return 0;    }}

原题地址

0 0
原创粉丝点击