【比较版本号】

2024-06-20 19:52
文章标签 比较 版本号

本文主要是介绍【比较版本号】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

比较版本号

  • 一、题目
  • 二、方法一:s.split()+parseInt()
  • 三、方法二:优化空间复杂度——双指针
  • 四、补充:charCodeAt()函数

一、题目

在这里插入图片描述

二、方法一:s.split()+parseInt()

在这里插入图片描述
使用split将版本号的字符串拆分为数组,再将数组中的每一项字符串用parseInt()方法转换为整数,parseInt()方法会自动忽略字符串前面的0转换为整数
在这里插入图片描述
在这里插入图片描述

设n为version1的长度,m为version2的长度,该题耗费的时间复杂度为O(n+m)或者O(max(n,m)),空间复杂度为O(n+m)

三、方法二:优化空间复杂度——双指针

在这里插入图片描述
该方法可以不用存储,在分割版本号的同时解析出修订号进行比较

四、补充:charCodeAt()函数

返回一个数字,该数字指示给定索引处字符的Unicode值。如果给定索引不在小于字符串长度的0到1之间,则返回NaN。

x=x*10+version1[a].charCodeAt()-'0'.charCodeAt()

version1[i].charCodeAt():获取字符串 version1 中索引为 i 的字符的 Unicode 编码值。
‘0’.charCodeAt():获取字符 ‘0’ 的 Unicode 编码值。
version1[i].charCodeAt() - ‘0’.charCodeAt():将字符的编码值减去 ‘0’ 的编码值,这样就可以得到该字符所表示的数字(因为 ‘0’ 到 ‘9’ 的编码值是连续的)。
x * 10:将当前已经解析的数字乘以 10,这样就可以将数字向左移动一位,为下一个数字腾出位置。
x * 10 + version1[i].charCodeAt() - ‘0’.charCodeAt():将上一步得到的数字与当前字符所表示的数字相加,这样就得到了新的数字。

这篇关于【比较版本号】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079097

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

关键字synchronized、volatile的比较

关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰于变量,而synchronized可以修饰方法,以及代码块。随着JDK新版本的发布,synchronized关键字的执行效率上得到很大提升,在开发中使用synchronized关键字的比率还是比较大的。多线程访问volatile不会发生阻塞,而synchronize