165. Compare Version Numbers

成都创新互联2013年开创至今,先为隆回等服务建站,隆回等地企业,进行企业商务咨询服务。为隆回企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
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
思路:
1.将两个版本字符串都分割好存入vector中。
2.比较2个vector中元素的大小。
其中注意:1 == 1.0.0
class Solution {
public:
vector stringSplit(string s, const char * split)
{
vector result;
const int sLen = s.length();
char *cs = new char[sLen + 1];
strcpy(cs, s.data());
char *p;
char * end;
p = strtok(cs, split);
while (p)
{
printf("%s\n", p);
string tmp(p);
int v = static_cast(strtol(tmp.c_str(),&end,10));
result.push_back(v);
p = strtok(NULL, split);
}
return result;
}
int compareVersion(string version1, string version2) {
vector vecInt1 = stringSplit(version1,".");
vector vecInt2 = stringSplit(version2,".");
int i;
for(i = 0; i < min(vecInt1.size(),vecInt2.size()); i++)
{
if(vecInt1[i] < vecInt2[i])
return -1;
else if(vecInt1[i] > vecInt2[i])
return 1;
}
if( vecInt1.size() < vecInt2.size())
{
int j = i;
for(;j 0)
return -1;
}
return 0;
}
else if(vecInt1.size() > vecInt2.size())
{
int j = i;
for(;j < vecInt1.size();j++)
{
if(vecInt1[j] > 0)
return 1;
}
return 0;
}
else
return 0;
}
};
网站标题:leetCode165.CompareVersionNumbers字符串
当前URL:http://www.jxjierui.cn/article/ppgegj.html


咨询
建站咨询
