[leetcode]Compare Version Numbers

来源:互联网 发布:淘宝显示在线人数插件 编辑:程序博客网 时间:2024/05/16 13:24

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.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

public class Solution {    public int compareVersion(String version1, String version2) {String[] cv1 = version1.split("\\.");String[] cv2 = version2.split("\\.");ArrayList<Integer> ai1 = new ArrayList<Integer>();ArrayList<Integer> ai2 = new ArrayList<Integer>();for(int i = 0; i < cv1.length; i++){//将字符串转成整数ai1.add(Integer.parseInt(cv1[i]));}for(int i = 0; i < cv2.length; i++){ai2.add(Integer.parseInt(cv2[i]));}int idx1 = 0, idx2 = 0;while(idx1 < ai1.size() && idx2 < ai2.size()){if(ai1.get(idx1) > ai2.get(idx2)){//比较第一组数大直接返回1return 1;}else if(ai1.get(idx1) < ai2.get(idx2)){//第二组数大直接返回-1return -1;}idx1++;idx2++;}if(idx1 == ai1.size() && idx2 == ai2.size()){return 0;//一组二组相同}for(int i = idx1; i < ai1.size(); i++){if(ai1.get(i) != 0) return 1; //第一组数据长,且后面数据不为0}for(int i = idx2; i < ai2.size(); i++){if(ai2.get(i) != 0) return -1;//第二组数据长,且后面数据不为0}return 0;              }}


0 0
原创粉丝点击