纯属吐槽。。那坑爹的题目,不过也有可能是我e文没看太仔细吧
原题目
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.
然后就掉坑里了。。
看测试用例,尼玛。。 拿'0' 跟'1'比较。。。 你赢了。。
继续。。 尼玛 testcase 里面有'0.0.1'
算你狠。。。 接着改
最后一个是'0.1'跟'0.0.1' 比较版本...
你大爷。。。
最终版本。。虽然确实丑了点
最终版本
# coding = utf8
class Solution:
# @param {string} version1
# @param {string} version2
# @return {integer}
def compareVersion(self, version1, version2):
v1 = self.compareVersionToTuple(version1)
v2 = self.compareVersionToTuple(version2)
deep = max(len(v1), len(v2), 2)
while len(v1) < deep:
v1.append(0)
while len(v2) < deep:
v2.append(0)
for n in range(deep):
sv_1 = v1[n]
sv_2 = v2[n]
if sv_1 > sv_2:
return 1
elif sv_1 < sv_2:
return -1
return 0
def compareVersionToTuple(self, version):
v = []
substrings = version.split('.')
for str in substrings:
v.append(int(str))
return v
def __init__(self):
ans = self.compareVersion('0.1', '0.0.1')
print(ans)
solution = Solution()
最后pycharm大法好。。。
来源:oschina
链接:https://my.oschina.net/u/1000353/blog/480508