LeetCode 165. Compare Version Numbers
来源:互联网 发布:锦尚中国的源码怎么样 编辑:程序博客网 时间:2024/05/17 17:15
- 题目
- 题意
- 分析
- 代码
题目
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
题意
这道题的大意是分析版本号大小,比如 2.5 指的是主版本为2,次版本为5的版本号。所以:
0.1 < 1.1 < 1.2 < 13.37
输入两个版本号,
如果version1 > version2 ,则返回 1
如果 version1 < version2 ,返回 -1
否则,返回 0。
分析
一开始看到这道题的时候,以为是简单的小数的大小比较,后来发现,不是这样简单的,要考虑还是比较多的,比如:
- 以0开头,比如
01
、1
,应 return 0- 以0结尾,比如
1.10
、1.2
,应 return 1- 多个点,比如
0.1
、0.0.1
,应 return 1
所以最好的做法是,按照点 “.” 分开每一级的数,同等级进行比较。
比如,12.01.03.4 和 12.01.08。
首先把两个version按照点拆开,分别进行比较
12 -> 12 相等 1 -> 1 相等 3 -> 8 小于(直接return) 4 -> 空
其实也不需要把每个点隔开的数字都先算出来,如上面的例子,在第三级就可以直接得到答案了,不需要再计算第四级的版本。
代码
int compareVersion(string version1, string version2) { int i=0, j=0, len1 = version1.size(), len2 = version2.size(), num1 = 0, num2 = 0; while(i<len1||j<len2){ while(i<len1 && version1[i]!='.') num1 = num1*10 + version1[i++]-'0'; while(j<len2 && version2[j]!='.') num2 = num2*10 + version2[j++]-'0'; if(num1>num2) return 1; else if(num1<num2) return -1; num1 = num2 = 0; i++; j++; } return 0;}
71 / 71 test cases passed.Runtime: 0 ms
- [LeetCode]165.Compare Version Numbers
- LeetCode 165. Compare Version Numbers
- 【LeetCode】165.Compare Version Numbers
- [leetcode] 165.Compare Version Numbers
- 【leetcode】165. Compare Version Numbers
- Leetcode 165. Compare Version Numbers
- 165. Compare Version Numbers LeetCode
- LeetCode *** 165. Compare Version Numbers
- leetcode 165. Compare Version Numbers
- LeetCode 165. Compare Version Numbers
- leetCode 165. Compare Version Numbers
- leetcode 165. Compare Version Numbers
- Leetcode 165. Compare Version Numbers
- LeetCode-165.Compare Version Numbers
- LeetCode-165. Compare Version Numbers
- 【leetcode】165. Compare Version Numbers
- [Leetcode]165. Compare Version Numbers
- LeetCode - 165. Compare Version Numbers
- java大神网站
- WampServer中MySQL中文乱码解决
- tensorflow的基本用法(八)——dropout的作用
- 【MySQL基础】事务与存储过程
- Ubuntu下tensorflow安装
- LeetCode 165. Compare Version Numbers
- 小瓜牛漫谈 — String、StringBuffer、StringBuilder
- 浮点数的二进制表示
- IOS
- MySQL的查询方法
- MYSQL常用命令
- JVM概述
- Java 性能优化之 String 篇
- 自定义radiobutton样式