Compare Version Numbers

来源:互联网 发布:js跨域cookie 编辑:程序博客网 时间:2024/04/30 09:53

问题来源:https://leetcode.com/problems/compare-version-numbers/

/** *  * <p> * ClassName CompareVersionNumbers * </p> * <p> * Description 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 * </p> *  * @author TKPad wangx89@126.com *         <p> *         Date 2015年3月26日 下午12:25:28 *         </p> * @version V1.0.0 * */public class CompareVersionNumbers {    // Input: "0.1", "0.0.1"    // Output: -1    // Expected: 1    public int compareVersion(String version1, String version2) {        String[] split = version1.split("\\.");        String[] split2 = version2.split("\\.");        // 取得小的数组的长度        int length1 = split.length;        int length2 = split2.length;        int length = length1 < length2 ? length1 : length2;        for (int i = 0; i < length; i++) {            int temp1 = Integer.valueOf(split[i]);            int temp2 = Integer.valueOf(split2[i]);            if (temp1 > temp2) {                return 1;            } else if (temp1 < temp2) {                return -1;            } else {                if (i == length - 1) {                    // 这个时候以短的为标准比较完毕,开始比较长的后面的数字是否为0                    if (length1 > length2) {                        for (int j = i + 1; j < length1; j++) {                            if (Integer.valueOf(split[j]) != 0) {                                return 1;                            }                        }                    } else if (length1 < length2) {                        for (int j = i + 1; j < length2; j++) {                            if (Integer.valueOf(split2[j]) != 0) {                                return -1;                            }                        }                    }                }            }        }        return 0;    }    public static void main(String[] args) {        // int compareVersion = new CompareVersionNumbers().compareVersion("0.1", "13.37");        // int compareVersion = new CompareVersionNumbers().compareVersion("0.1", "13.37");        int compareVersion = new CompareVersionNumbers().compareVersion("1.0.0", "1");        System.out.println(compareVersion);    }}
0 0