Compare Version Numbers

1、题目描述

2、解法分析

首先,使用 ' . ' 号分隔的version 每两个点号之间的数字就是数值,使用 vector<string> 将每个version 字符串中的字符串摘取出来,然后对比对应的字符串表示的数字大小,本题使用 C++ 标准库中 stoi() 函数,将string 转换为数字。

 

3、代码

 1 int compareVersion(string version1, string version2) {
 2        
 3         vector<string> v1;
 4         vector<string> v2;
 5         string::iterator it1 = version1.begin();
 6         
 7         string s1 ;
 8         while( it1 != version1.end() ){
 9             if( *it1 == '.') {
10                 v1.push_back(s1);
11                 s1.clear() ;
12             } else{
13                 s1 += *it1;
14             }
15             it1++;
16         }
17         v1.push_back( s1 ) ;
18         
19         string s2;
20         auto it2 = version2.begin() ;
21         while( it2 != version2.end() ){
22             if( *it2 == '.' ){
23                 v2.push_back(s2);
24                 s2.clear();
25             }else{
26                 s2 += *it2;
27             } 
28             it2++;
29         }
30         v2.push_back( s2 );
31         
32         vector<string>::iterator p1 = v1.begin() ;
33         vector<string>::iterator p2 = v2.begin() ;
34         while( p1 != v1.end() && p2 != v2.end() ){
35             if( stoi( *p1) > stoi(*p2)  ){
36                 return 1;
37             }else if( stoi(*p1) < stoi(*p2) ){
38                 return -1;
39             }
40             ++p1;
41             ++p2;
42         }
43         
44         while( p1 != v1.end() )
45         {
46             if( stoi(*p1) > 0 )
47                 return 1;
48             p1++;
49         }
50             
51         while( p2 != v2.end() )
52         {
53             if( stoi(*p2) > 0 )
54                 return -1;
55             p2++;
56         }
57         
58         return 0;
59   
60     }

 

posted @ 2018-07-11 16:32  山里的小勇子  阅读(119)  评论(0编辑  收藏  举报