您的位置:首页 > 其它

LeetCode:Compare Version Numbers

2015-10-12 08:30 405 查看
这道题的难度是Easy,但是通过率不高,主要是题目给的不是很明确,测试的场景也比较复杂。

经过多番调试,终于Accepted。目前的解决方式采用了递归。采用非递归的方式,需要记录连续两个'.'的位置,觉得操作太烦了,故没有使用。

int compareVersion(string version1, string version2)

{

int
pos1 = version1.find_first_of('.');

int
pos2 = version2.find_first_of('.');

int
m,n;

if
(pos1!=-1)

{

m
= atoi(version1.substr(0,pos1).c_str());

}

else

{

m=atoi(version1.c_str());

}

if
(pos2!=-1)

{

n
= atoi(version2.substr(0,pos2).c_str());

}

else

{

n
= atoi(version2.c_str());

}

if
(m==n)

{

if
(pos1!=-1&&pos2!=-1)

{

return
compareVersion(version1.substr(pos1+1),version2.substr(pos2+1));

}

else
if(pos1!=-1)

{

return
compareVersion(version1.substr(pos1+1),"0");

}

else
if (pos2!=-1)

{

return
compareVersion("0",version2.substr(pos2+1));

}

else

{

return
0;

}

}

return
m<<span
style="color:navy">n?-1:1;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: