LeetCode Algorithm 165. Compare Version Numbers

5th July 2017 at 10:07am
LeetCodeProblems

165. Compare Version Numbers

题目链接 | 我的解答

这是道水题。给你两个版本号的字符串(只包含点号和数字),要你比较大小,比如:

0.1 < 1.1 < 1.2 < 13.37

需要注意的是,1.7 < 1.15 的,点号分隔出来的第二部分只是小版本号,也要按数字的方法比较大小,而不是用字符串字典序。

这道题一开始觉得很简单,看了题目中的示例数据后,以为版本号字符串都是两部分组成的,直接 Python str.split 开搞,结果发现有三部分的版本号 1.0.2,也有一部分的版本号 1。还有以 0 开头的版本号:1.02。还有奇怪的 1.0

处理好这些 case 后很容易就过了。写了 Python 跟 C++ 两个版本。C++ 的版本用了 stringstream 用来解析数字和点号。

看题很重要,思考测试数据的可能性很重要。虽然是水题也错了这么多次。