您的位置:首页 > 编程语言 > C语言/C++

Compare Version Numbers

2016-06-09 16:19 323 查看

c++

class Solution {
public:
int compareVersion(string version1, string version2) {
if (version1.empty() || version2.empty())
return 0;
vector<int> v1 = splitString(version1);
vector<int> v2 = splitString(version2);

int minLength = min(v1.size(), v2.size());

for (int i = 0; i < minLength; ++i) {
if (v1[i] < v2[i])
return -1;
if (v1[i] > v2[i])
return 1;
}
if (v1.size() < v2.size()) {
if (v2.back() > 0)
return -1;
else
return 0;
}
else if (v1.size() > v2.size()) {
if (v1.back() > 0)
return 1;
else
return 0;
}

return 0;

}
private:
vector<int> splitString(const string &version) {
vector<int> res;
int tmp = 0;
for (auto v : version) {
if (v == '.') {
res.push_back(tmp);
tmp = 0;
}
else {
tmp *= 10;
tmp += (v - '0');
}
}
res.push_back(tmp);
return res;
}
};


python

class Solution(object):
def compareVersion(self, version1, version2):
"""
:type version1: str
:type version2: str
:rtype: int
"""
if len(version1) ==0 or len(version2)==0:
return 0

v1 = version1.split('.')
v2 = version2.split('.')

while len(v1)<len(v2):
v1.append('0')
while len(v2)<len(v1):
v2.append('0')

for i in xrange(len(v2)):
if int(v1[i]) < int(v2[i]):
return -1
if int(v1[i]) > int(v2[i]):
return 1
return 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言