题目描述:
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
将字符串按‘.’拆分,对每一段分别比较。
class Solution {
public:
int compareVersion(string version1, string version2) {
vector<string> a=split(version1);
vector<string> b=split(version2);
int i=0;
while(i<a.size()&&i<b.size())
{
if(atoi(a[i].c_str())<atoi(b[i].c_str())) return -1;
else if(atoi(a[i].c_str())>atoi(b[i].c_str())) return 1;
i++;
}
if(i<a.size())
for(int j=i;j<a.size();j++) if(atoi(a[j].c_str())>0) return 1;
else if(i<b.size())
for(int j=i;j<b.size();j++) if(atoi(b[j].c_str())>0) return -1;
return 0;
}
vector<string> split(string s)
{
vector<string> result;
int i=0;
int j=0;
while(j<s.size())
{
if(j==s.size()-1)
{
result.push_back(s.substr(i,j-i+1));
break;
}
else if(s[j]=='.')
{
result.push_back(s.substr(i,j-i));
j++;
i=j;
}
else j++;
}
return result;
}
};
本文介绍了一种用于比较软件版本号的算法实现。通过将版本号字符串拆分为序列,并逐个比较每个部分的数值来确定两个版本之间的大小关系。文章提供了一个具体的C++代码示例,展示了如何实现这一功能。
132

被折叠的 条评论
为什么被折叠?



