本文主要是介绍LeetCode(68)-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-levelrevision of the second first-level revision.Here is an example of version numbers ordering:0.1 < 1.1 < 1.2 < 13.37
思路:
- 题意:比较两个版本号字符串的大小
- 把字符串用split转化为数组,注意split(\.),然后转化为整数数组,遍历比较。注意如果版本号后面都是零的情况
代码:
public class Solution {public int compareVersion(String version1, String version2) {String[] v1,v2;if(version1.indexOf(".") == -1){v1 = new String[1];v1[0] = version1;}else{v1 = new String[version1.split("\\.").length];v1 = version1.split("\\.");}if(version2.indexOf(".") == -1){v2 = new String[1];v2[0] = version2;}else{v2 = new String[version2.split("\\.").length];v2 = version2.split("\\.");}int[] array1 = sToInt(v1);int[] array2 = sToInt(v2);int nn = Math.min(array1.length,array2.length);for(int a = 0;a < nn;a++){if(array1[a] > array2[a]){return 1;}else if(array1[a] < array2[a]){return -1;}}if(array1.length > array2.length){for(int k = nn; k < array1.length;k++){if(array1[k] != 0){return 1;}}return 0;}else if(array1.length < array2.length){for(int m = nn;m < array2.length;m++){if(array2[m] != 0){return -1;}}return 0;}return 0;}public int[] sToInt(String[] ss){int n = ss.length;int[] result = new int[n];for(int i = 0;i < n;i++){try{result[i] = Integer.parseInt(ss[i]);}catch(Exception e){}}return result;}
}
这篇关于LeetCode(68)-Compare Version Numbers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!