leetcode:Compare Version Numbers

来源:互联网 发布:企业淘宝开店流程图解 编辑:程序博客网 时间:2024/03/29 04:43

Compare two version numbers version1 and version1.
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


public class Solution {    static final double EPS = 0.0000001;    static final String POINT = ".";    public int compareVersion(String version1, String version2) {         int from1 = 0;        int from2 = 0;        int end1 = 0;        int end2 = 0;        do{            end1 = version1.indexOf(POINT, from1);            end2 = version2.indexOf(POINT, from2);            if(end1 == -1){                end1 = version1.length();            }            if(end2 == -1){                end2 = version2.length();            }            int n1 = Integer.valueOf(version1.substring(from1, end1));            int n2 = Integer.valueOf(version2.substring(from2, end2));            if(n1 != n2) return n1 > n2 ? 1 : -1;            from1 = end1 + 1;            from2 = end2 + 1;        }while(from1 != 0 && from2 != 0 && from1 < version1.length() && from2 < version2.length());        if(from1 < version1.length()){            do {                end1 = version1.indexOf(POINT, from1);                if(end1 == -1)end1 = version1.length();                int n1 = Integer.valueOf(version1.substring(from1, end1));                if(n1 > 0) return 1;                from1 = end1 + 1;            }while(from1 < version1.length());        }        else if(from2 < version2.length()){            do{                end2 = version2.indexOf(POINT, from2);                if(end2 == -1) end2 = version2.length();                int n2 = Integer.valueOf(version2.substring(from2, end2));                if(n2 > 0) return -1;                from2 = end2 + 1;            }while(from2 < version2.length());        }        return 0;    }    }


0 0
原创粉丝点击