【刷题-LeetCode】165 Compare Version Numbers
- Compare Version Numbers
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.
You may assume the default revision number for each level of a version number to be 0. For example, version number 3.4 has a revision number of 3 and 4 for its first and second level revision number. Its third and fourth level revision number are both 0.
Example 1:
Input: version1 = "0.1", version2 = "1.1"
Output: -1
Example 2:
Input: version1 = "1.0.1", version2 = "1"
Output: 1
Example 3:
Input: version1 = "7.5.2.4", version2 = "7.5.3"
Output: -1
Example 4:
Input: version1 = "1.01", version2 = "1.001"
Output: 0
Explanation: Ignoring leading zeroes, both “01” and “001" represent the same number “1”
Example 5:
Input: version1 = "1.0", version2 = "1.0.0"
Output: 0
Explanation: The first version number does not have a third level revision number, which means its third level revision number is default to "0"
Note:
- Version strings are composed of numeric strings separated by dots
.and this numeric strings may have leading zeroes. - Version strings do not start or end with dots, and they will not be two consecutive dots.
解 解析出每一段版本号进行比较,假设解析出来的数字分别为n1, n2
- n1 > n2:版本1>版本2
- n1 < n2:版本1 < 版本2
- n1 == n2 :比较下一段
在比较到末尾时,长的版本号剩余部分如果全部为0,则版本1 == 版本2,否则长的号对应的版本高
为了方便,在每个版本号后面增加了'#'作为结束符
class Solution {
public:
int compareVersion(string version1, string version2) {
version1.push_back('#');
version2.push_back('#');
int pos1 = 0, pos2 = 0;
int num1 = 0, num2 = 0;
while(version1[pos1] != '#' && version2[pos2] != '#'){
num1 = 0; num2 = 0;
if(version1[pos1] == '.')pos1++;
while(version1[pos1] != '#' && version1[pos1] != '.'){
num1 = num1 * 10 + (version1[pos1++] - '0');
}
if(version2[pos2] == '.')pos2++;
while(version2[pos2] != '#' && version2[pos2] != '.'){
num2 = num2 * 10 + (version2[pos2++] - '0');
}
if(num1 < num2)return -1;
else if(num1 > num2)return 1;
}
if(version1[pos1] == '#' && version2[pos2] == '#'){
return 0;
}else if(version1[pos1] == '#'){
if(allZeros(version2.substr(pos2)))return 0;
else return -1;
}else{
if(allZeros(version1.substr(pos1)))return 0;
else return 1;
}
}
bool allZeros(const string &s){
int test = 0, pos = 0;
while(s[pos] != '#'){
if(s[pos] == '.')pos++;
else test += s[pos++] - '0';
}
if(test == 0)return true;
else return false;
}
};
【刷题-LeetCode】165 Compare Version Numbers的更多相关文章
- [LeetCode] 165. Compare Version Numbers 比较版本数
Compare two version numbers version1 and version1.If version1 > version2 return 1, if version1 &l ...
- ✡ leetcode 165. Compare Version Numbers 比较两个字符串数字的大小 --------- java
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- Java for LeetCode 165 Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- Java [Leetcode 165]Compare Version Numbers
题目描述: Compare two version numbers version1 and version2.If version1 > version2 return 1, if versi ...
- Leetcode 165 Compare Version Numbers
题意:比较版本号的大小 有点变态,容易犯错 本质是字符串的比较,请注意他的版本号的小数点不知1个,有的会出现01.0.01这样的变态版本号 class Solution { public: int c ...
- 【LeetCode】165. Compare Version Numbers 解题报告(Python)
[LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
- 165. Compare Version Numbers - LeetCode
Question 165. Compare Version Numbers Solution 题目大意: 比较版本号大小 思路: 根据逗号将版本号字符串转成数组,再比较每个数的大小 Java实现: p ...
- 【一天一道LeetCode】#165. Compare Version Numbers
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...
- 【LeetCode】165 - Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
随机推荐
- LuoguP4419 [COCI2017-2018#1] Cezar 题解
Content 有一个牌库,有一些点数为 \(1\sim 11\) 的牌,其中除了点数为 \(10\) 的牌有 \(16\) 张之外,其余点数的牌各有四张.现在玩一个游戏,已经拿出了 \(n\) 张牌 ...
- AOP——面向切面编程
目录 什么是AOP AOP的作用和优势 作用: 优势: AOP相关术语 AOP的实现方式 使用动态代理的方式 使用XML的方式 使用注解的方式 什么是AOP AOP:全称是Aspect Oriente ...
- 淘宝自动抢购, Webdriver浏览器常用的元素定位
https://www.cnblogs.com/diaosicai/p/5909660.html #!/usr/bin/env python ''' 作者:张铭达 功能:淘宝秒杀购物 版本:0.2 日 ...
- 奇怪的现象,打印出来可以见到数据,在右边看不到数据,放到list里在页面上也显示不了数据
- SpringBoot(SpringMVC)使用addViewControllers设置统一请求URL重定向配置
只需要在配置中重写 addViewControllers方法 import org.springframework.context.annotation.Configuration; import o ...
- 创建Ubuntu server 服务器git项目
服务器端: mkdir project.git cd project.git git init --bare cd .. p.p1 { margin: 0; font: 11px Menlo; col ...
- mac OSX使用spdlog1.7
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist 注意️ 请选择对c++11支持较为完善的编译器,因为spdlog一直更新. 本机演示环境 ...
- 【LeetCode】624. Maximum Distance in Arrays 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 大根堆+小根堆 保存已有的最大最小 日期 题目地址:h ...
- Sublime Text3快速创建HTML5框架
输入html:5 按tab键即可
- A Tutorial on Energy-Based Learning
目录 概 主要内容 损失函数 Energy Loss Generalized Perceptron Loss Generalized Margin Loss Hinge Loss Log Loss L ...