Compare Version Numbers 165

题目描述:

给出两个字符串表示的版本号,比较这两个版本号。

如果第一个大返回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 }

 

posted @ 2015-01-20 09:54  li-xingtao  阅读(155)  评论(0编辑  收藏  举报