Compare Version Numbers
2015-10-06 09:32
351 查看
原题链接
题目
思路
code
题目
Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and the . character. The . character does not represent a decimal point and is used to separate number sequences. For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision. Here is an example of version numbers ordering: 0.1 < 1.1 < 1.2 < 13.37 01 == 1 1.0.1 > 1 1.0.0 == 1
思路
对version string进行"."split. 利用归并排序的思想对其进行大小对比. 需要注意的是, version string的"."的个数
code
class Solution { public: void getVerNum(string s, vector<int>& V) { int i = 0; int len = s.length(); while(i < len) { int n = 0; bool flag = false; for(; i < len; i++) { if(s[i] == '.') { flag = true; break; } n = n * 10 + (s[i] - '0'); } if(flag) i++; V.push_back(n); } } int comp(const vector<int>& V1, const vector<int>& V2) { int len1 = V1.size(); int len2 = V2.size(); int i = 0; while(i < len1 && i < len2) { if(V1[i] > V2[i]) return 1; if(V1[i] < V2[i]) return -1; i++; } if(len1 == len2) return 0; if(i >= len1) { while(i < len2) { if(V2[i++] != 0) return -1; } return 0; } if(i >= len2) { while(i < len1) { if(V1[i++] != 0) return 1; } return 0; } return 0; } int compareVersion(string version1, string version2) { vector<int> V1, V2; getVerNum(version1, V1); getVerNum(version2, V2); return comp(V1, V2); } };
相关文章推荐
- 《zw版·Halcon-delphi系列原创教程》 水果自动分类脚本(机器学习、人工智能)
- VBA 学习
- OC第五讲(NSNumber,NSArray,NSDictionary,NSSet等)
- 计算器
- 牛老师第二次作业
- OC(实现简单通讯录操作)
- OC(实现中等通讯录的操作)
- Ubuntu文件系统的一些基本命令
- ECShop 去掉配送区域
- OC深坑测试题及其答案
- 创建纯洁的TableViewCell
- Expandablelistview
- OC第六讲(Block,语法糖)
- 活动指示器ActivityIndicatorView和进度条ProgressView
- 关于程序员的笑话
- Plug-in org.eclipse.jdt.ui was unable to load class
- iOS 给UIView、UIImageView、UILabel添加点击事件
- 江湖急救篇:slave 复制错误
- OC第七讲(Category类目)
- UI第一讲(UIView)