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; } };
相关文章推荐
- (有码)创建单例
- 【JAVA】34、对象引用传递
- c++如何将string 转换为char*
- 232. Implement Queue using Stacks
- C语言连接mysql数据库
- 好用的在线编译/调试工具
- poj2115——C Looooops(数论,解模线性方程)
- 第 3 章 流程控制语句
- 《我是一只IT小小鸟》读后感
- Mininet学习笔记
- 脚本——生成验证码的函数
- mysql 的简单优化
- 作业-01
- Leetcode: 107. Binary Tree Level Order Traversal II(JAVA)
- scott账户已被锁定,解锁方法
- python学习:机器学习下的pybrain和多线程编程
- 【Http专题】Https
- 个人项目一改进
- linux输入法
- is_a原则和has_a原则