您的位置:首页 > 其它

JBL leetcode 165. Compare Version Numbers

2016-03-09 20:14 330 查看
class Solution {
public:
int compareVersion(string version1, string version2) {
int flag =0;
bool flag0=true;
bool first1=true;
bool first2=true;
int i,j;
for(i=0,j=0;i<version1.size()&&j<version2.size();i++,j++)
{

if(version1[i]==version2[j])
{
if(!first1&&version1[i]!='.'&&version1[i]!='0') first2=false;
if(version1[i]=='.')
{
flag0=true;
first1=false;
}
if(version1[i]!='.'&&version1[i]!='0') flag0=false;
continue;
}
if(flag0)
{
if(version1[i]!='0'&&version2[j]!='0') flag0=false;
else
{
if(version1[i]!='0') i--;
if(version2[j]!='0') j--;
continue;
}
}
if(version1[i]=='.'&&version2[j]!='.') return -1;
if(version2[j]=='.'&&version1[i]!='.') return 1;
if(version2[j]=='.'&&version1[i]=='.'&&flag!=0) return flag;
if(flag==0)
{
if(version1[i]-version2[j]>0) flag=1;
else flag=-1;
}
if(!first1&&version1[i]!='.'&&version1[i]!='0') first2=false;
}
if(!first2)
{
if(!flag0&&i<version1.size()&&version1[i]!='.') return 1;
if(!flag0&&j<version2.size()&&version2[j]!='.') return -1;
}
if(flag!=0) return flag;
if(flag0&&i<version1.size())
for(;i<version1.size();i++)
if(version1[i]!='0'&&version1[i]!='.')
return 1;
if(flag0&&j<version2.size())
for(;j<version2.size();j++)
if(version2[j]!='0'&&version2[j]!='.')
return -1;
if(!flag0&&i<version1.size())
for(;i<version1.size();i++)
if(version1[i]!='0'&&version1[i]!='.')
return 1;
if(!flag0&&j<version2.size())
for(;j<version2.size();j++)
if(version2[j]!='0'&&version2[j]!='.')
return -1;
return flag;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: