首页 > 其他分享 >165. 比较版本号(中)

165. 比较版本号(中)

时间:2024-02-10 11:22:24浏览次数:26  
标签:下标 version1 version2 版本号 修订 165 比较 num1

目录

题目

  • 给你两个版本号 version1 和 version2 ,请你比较它们。
    版本号由一个或多个修订号组成,各修订号由一个 '.' 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。
    比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 001 相等 。如果版本号没有指定某个下标处的修订号,则该修订号视为 0 。例如,版本 1.0 小于版本 1.1 ,因为它们下标为 0 的修订号相同,而下标为 1 的修订号分别为 0 和 1 ,0 < 1 。
    返回规则如下:
    如果 version1 > version2 返回 1,
    如果 version1 < version2 返回 -1,
    除此之外返回 0

示例 1:

输入:version1 = "1.01", version2 = "1.001"
输出:0
解释:忽略前导零,"01" 和 "001" 都表示相同的整数 "1"

示例 2:

输入:version1 = "1.0", version2 = "1.0.0"
输出:0
解释:version1 没有指定下标为 2 的修订号,即视为 "0"

示例 3:

输入:version1 = "0.1", version2 = "1.1"
输出:-1
解释:version1 中下标为 0 的修订号是 "0",version2 中下标为 0 的修订号是 "1" 。0 < 1,所以 version1 < version2

题解

class Solution:  
    def compareVersion(self, version1: str, version2: str) -> int:  
        # 初始化两个指针,分别指向两个字符串的起始位置  
        p = 0  
        q = 0  
        # 使用 while 循环直到遍历完两个版本号字符串  
        while p < len(version1) or q < len(version2):  
            # 提取 version1 的子版本号,直到遇到点号或字符串结束  
            num1 = 0  
            while p < len(version1) and version1[p] != '.':  
                num1 = num1 * 10 + int(version1[p])  
                p += 1   
            # 提取 version2 的子版本号,直到遇到点号或字符串结束  
            num2 = 0  
            while q < len(version2) and version2[q] != '.':  
                num2 = num2 * 10 + int(version2[q])  
                q += 1  
            # 比较两个子版本号  
            if num1 > num2:  
                return 1  
            elif num1 < num2:  
                return -1  
            # 如果两个子版本号相等,继续比较下一个子版本号  
            # 移动指针以跳过点号(如果存在)  
            p += 1  
            q += 1    
        # 如果两个版本号完全相同,返回 0  
        return 0

标签:下标,version1,version2,版本号,修订,165,比较,num1
From: https://www.cnblogs.com/lushuang55/p/18012765

相关文章

  • 用 python 比较 椭球体、单叶双曲面、双叶双曲面
    2024年2月10日 昨天晚上年夜饭,也算是道出这几年的麻烦——就是内心戏多,加上身边又没有太多的案例(或者更多人)让我的认知有个比较客观的校准。现在就学习吧。尝试用Python画出椭球体、单叶双曲面、双叶双曲面。 1.椭球面 代码#----Test-----#椭球,单叶双曲......
  • Android系统版本号对照表
    Android系统版本号对照表 系统名称系统版本号字母Android1434UAndroid1333TAndroid12L32SAndroid1231SAndroid1130RAndroid1029QAndroid928PieAndroid8.127OreoAndroid8.026OreoAndroid7.1......
  • 08_TIM输出比较
    TIM输出比较输出比较简介CNT:计数器CCR:捕获/比较寄存器PWM简介输出比较通道(高级)输出比较通道(通用)输出比较模式PWM基本结构参数计算舵机简介舵机硬件电路直流电机及驱动简介硬件电路PWM驱动LED呼吸灯接线图参数计算产生一个频率为1KHz,占空比......
  • 核显第一次干掉GTX 1650!AMD锐龙7 8700G/锐龙5 8600G首发评测:AI生图算力6倍于入门独显
    一、前言:核显第一次斩落GTX1650此前很少有人会用核显玩3A游戏,AMD锐龙78700G的诞生改变了这一切!在移动端的锐龙97940HS上市之前,我们曾认为它的核显性能可以比肩GTX1650,毕竟有RDNA3构架加持,再加上GPU频率高达2800MHz。但实际表现并不及预期,只是略强于GTX1050Ti。2024年1月......
  • datetime.date + datetime.timedelta 结果仍然是 datetime.date 因而不能与时间进行比
    importpandasaspdimportdatetimedefmain():foo=pd.Timestamp.now()bar=datetime.date.today()+datetime.timedelta(days=-1)res=bar+datetime.timedelta(hours=24)print(res,type(res))if__name__=='__main__':ma......
  • Java 中的比较器
    比较器TreeSet集合中元素可排序的方式:使用比较器的方式结论:放到TreeSet或者TreeMap集合中的key部分的元素要想做到排序,有两种方法:第一种:放到集合中的元素实现java.lang.Comparable接口importjava.util.Comparator;importjava.util.TreeSet;publicclassTreeSetTest02{......
  • R语言Kmeans聚类、PAM、DBSCAN、AGNES、FDP、PSO粒子群聚类分析iris数据结果可视化比
    全文链接:http://tecdat.cn/?p=32007原文出处:拓端数据部落公众号本文以iris数据和模拟数据为例,帮助客户了比较R语言Kmeans聚类算法、PAM聚类算法、DBSCAN聚类算法、AGNES聚类算法、FDP聚类算法、PSO粒子群聚类算法在iris数据结果可视化分析中的优缺点。结果:聚类算法的聚类结......
  • js Konqueror 和 KHTML 的版本号
    WebKit2003年,苹果宣布将发布自己的浏览器Safari。Safari的渲染引擎叫WebKit,是基于Linux平台浏览器Konqueror使用的渲染引擎KHTML开发的。几年后,WebKit又拆分出自己的开源项目,专注于渲染引擎开发。这个新浏览器和渲染引擎的开发者也面临与当初IE3.0时代同样的问题:怎......
  • 什么是数据孤岛?哪些行业比较容易产生?
    容易产生数据孤岛的行业有:一、医疗行业;二、金融行业;三、制造业;四、零售业;五、教育行业;六、能源行业。这些行业内部存在的数据孤岛问题,不仅影响了信息的共享和整合,也妨碍了业务流程的优化和创新。一、医疗行业医疗行业是一个信息密集、分散且高度专业化的领域。不同医院、诊所和......
  • c语言小练习——字符串长度、拷贝、拼接、比较
    /* 使用c语言知识实现下面程序: 1,实现strlen函数的功能 2,实现strcpy函数的功能 3,实现strcat函数的功能 4,实现strcmp函数的功能 不允许使用已有的str函数*/1#define_CRT_SECURE_NO_WARNINGS2#include<stdio.h>3#include<string.h>4#include<stdbool.h>5#......