Leetcode 165. Compare Version Numbers
2016-02-12 23:39
106 查看
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
Java代码如下:
这里进行了补全,但是看到了更简单的方法
不进行补全,用逻辑表达式进行长度比较,代码更少,更简单。
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
Java代码如下:
public class Solution { public int compareVersion(String version1, String version2) { // 得到两个version的长度 int size1 = version1.split("\\.").length; int size2 = version2.split("\\.").length; // 对较短的进行补全 if(size1 > size2) { for(int i = 0; i < (size1 - size2); i++) { version2 = version2 + ".0"; } } else if(size1 < size2) { for(int i = 0; i < (size2 - size1); i++) { version1 = version1 + ".0"; } } // 逐个进行比较 int size = size1 > size2 ? size1 : size2; String[] array1 = version1.split("\\."); String[] array2 = version2.split("\\."); for(int i = 0; i < size; i++) { int a = Integer.parseInt(array1[i]); int b = Integer.parseInt(array2[i]); if(a > b) { return 1; } else if(a < b){ return -1; } } return 0; } }
这里进行了补全,但是看到了更简单的方法
public class Solution { public int compareVersion(String version1, String version2) { if(version1 == null || version2 ==null) return 0; String[] v1 = version1.split("\\."); String[] v2 = version2.split("\\."); int n1 = v1.length; int n2 = v2.length; int i=0; while(i<n1 || i<n2) { int x1 = i<n1 ? Integer.parseInt(v1[i]) : 0; int x2 = i<n2 ? Integer.parseInt(v2[i]) : 0; if(x1 > x2) return 1; else if(x1 < x2) return -1; else ++i; } return 0; } }
不进行补全,用逻辑表达式进行长度比较,代码更少,更简单。
相关文章推荐
- 【UVa】[210]Concurrency Simulator
- hdu4415 Assassin's Creed
- 在腾讯的第二堂产品课——改变大河的流向 梁宁-闲花照水录
- 1025. 反转链表
- hexo&github博客搭建
- 多个Excel文件的第一个工作表(Sheet)合并到一个Excel文件的多个工作表里
- sharding-jdbc-how2work 当当的sharding-jdbc剖析
- c#基本知识:泛型集合的使用
- IT产品质量保证测试矩阵
- 扩展欧几里得的学习
- Java—java方法重载
- locationInView 和translationInView这个两个方法的区别
- 传智播客168期JavaEE就业班(第六天 Dom4j)
- An error occurred while processing the post-install hook of the Podfile.undefined method `project`
- CodeForces 1B Spreadsheets
- 供给侧也好,需求侧也好,都只是个名词
- git使用心得
- 一步步解析Python斗牛游戏的概率
- 使用FloatingActionButton无法浮现在ListView的原因
- JavaWeb_Session实现简易购物车