博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Compare Version Numbers LC解题记录
阅读量:5872 次
发布时间:2019-06-19

本文共 802 字,大约阅读时间需要 2 分钟。

比较不同的版本号,并根据大小返回-1,1或0。并提醒2.5版本意思是第二代的第五次升级,反正不是数字上的2.5的意思。

解决思路

直观的想法是,找到比较两个字符串(版本号)的方法,举个例子,1.1.2和1.2.3的比较,那么先比较第一位,两个1相等。那么就再看第二位,1<2,得出结果。

根据这个思路,先把字符串拆分成字符串数组,然后逐个比较即可。

代码

public class Solution {    public int compareVersion(String version1, String version2) {        //拆分两个字符串        String[] v1 = version1.split("\\.");        String[] v2 = version2.split("\\.");        int l1 = v1.length, l2 = v2.length;        int len = Math.max(l1,l2);        //这里用最大的长度作为循环范围        for(int i = 0; i < len; i++){            //因为循环范围是最大长度,所以缺的位置补0            int cur1 = i < l1 ? Integer.valueOf(v1[i]) : 0;            int cur2 = i < l2 ? Integer.valueOf(v2[i]) : 0;            if(cur1 < cur2) return -1;            else if(cur1 > cur2) return 1;        }        return 0;    }}

复杂度分析

O(m+n),m和n分别是两个字符串的长度。

转载地址:http://fqhnx.baihongyu.com/

你可能感兴趣的文章
1163: 零起点学算法70——Yes,I can!
查看>>
获取手机上安装的应用信息
查看>>
博客地址迁移
查看>>
html转义字符
查看>>
ruby require
查看>>
VS2012 ffmpeg 没有定义的lrint
查看>>
CodeForces 698A - Vacations (Codeforces Round #363 (Div. 2))
查看>>
复利计算器-结对编程1.1
查看>>
Intersection between 2d conic in OpenCASCADE
查看>>
java泛型中<?>和<T>有什么区别?
查看>>
jq中
查看>>
电脑异常关闭导致dubbo启动错误问题
查看>>
基本网络概念
查看>>
程序员疫苗:代码注入
查看>>
将 ASP.NET Core 2.0 项目升级至 ASP.NET Core 2.1 RC 1
查看>>
IOS SEL (@selector) 原理及使用总结(一)
查看>>
css固定定位与绝对定位的区别
查看>>
Xml序列化、反序列化帮助类
查看>>
[iOS]ARC和MRC下混编
查看>>
Android将应用调试log信息保存在SD卡
查看>>