标签:
给出两个字符串表示的版本号,比较这两个版本号。
如果第一个大返回1,如果第二个大返回-1,如果相同返回0
两个版本号中都只包含数字字符和 ‘.‘
例如
0.1 < 1.1 < 1.2 < 13.37
1.0=1
字符串处理,把字符串中拆分成数字
1 int getNum(string str,int &index){ 2 int ret=0; 3 if(index<str.length() && (str[index]>‘9‘ || str[index]<‘0‘))index++; ///去掉前面的非数字字符,本题中就是 ‘.‘ 4 for(;index<str.length() && str[index]<=‘9‘ && str[index]>=‘0‘;index++)ret=ret*10+str[index]-‘0‘; 5 6 return ret; 7 } 8 9 int compareVersion(string version1, string version2) { 10 int index1,index2; 11 index1=index2=0; 12 while(index1<version1.length() &&index2<version2.length()){ 13 int v1=getNum(version1,index1); 14 int v2=getNum(version2,index2); 15 if(v1>v2)return 1; 16 if(v1<v2)return -1; 17 } 18 19 while(index1<version1.length()){ 20 int v1=getNum(version1,index1); 21 if(v1>0)return 1; ///后面的数字是0的话,还是相等 22 } 23 while(index2<version2.length()){ 24 int v2=getNum(version2,index2); 25 if(v2>0)return -1; 26 } 27 return 0; 28 }
标签:
原文地址:http://www.cnblogs.com/li-xingtao/p/4235304.html