• 165 Compare Version Numbers 比较版本号


    比较两个版本号 version1 和 version2。
    如果 version1 大于 version2 返回 1,如果 version1 小于 version2 返回 -1, 除此以外 返回 0。
    您可能认为版本字符串非空,并且只包含数字和 . 字符。
    这个 . 字符不代表小数点,而是用于分隔数字序列。
    例如,2.5 不是“两个半”或“差一半到三个版本”,它是第二个第一级修订版本的第五个二级修订版本。
    以下是版本号排序的示例:
    0.1 < 1.1 < 1.2 < 13.37

    详见:https://leetcode.com/problems/compare-version-numbers/description/

    Java实现:

    由于两个版本号所含的小数点个数不同,有可能是1和1.1.1比较,还有可能开头有无效0,比如01和1就是相同版本,还有可能末尾无效0,
    比如1.0和1也是同一版本。对于没有小数点的数字,可以默认为最后一位是小数点,而版本号比较的核心思想是相同位置的数字比较,
    比如题目给的例子:1.2和13.37比较,首先1和13比较,13比1大,所以后面的不用再比了,再比如1.1和1.2比较,前面都是1,则比较小数点后面的数字。
    那么算法就是每次对应取出相同位置的小数点之前所有的字符,把他们转为数字比较,若不同则可直接得到答案,若相同,再对应往下取。
    如果一个数字已经没有小数点了,则默认取出为0,和另一个比较,这样也解决了末尾无效0的情况。

    class Solution {
        public int compareVersion(String version1, String version2) {
            int val1=0,val2=0;
            int idx1=0,idx2=0;
            while(idx1<version1.length()||idx2<version2.length()){
                val1=0;
                while(idx1<version1.length()){
                    if(version1.charAt(idx1)=='.'){
                        ++idx1;
                        break;
                    }
                    val1=val1*10+version1.charAt(idx1++)-'0';
                }
                val2=0;
                while(idx2<version2.length()){
                    if(version2.charAt(idx2)=='.'){
                        ++idx2;
                        break;
                    }
                    val2=val2*10+version2.charAt(idx2++)-'0';
                }
                if(val1>val2){
                    return 1;
                }
                else if(val1<val2){
                    return -1;
                }
            }
            return 0;
        }
    }
    

    参考:https://www.cnblogs.com/grandyang/p/4244123.html

  • 相关阅读:
    Keil 4 与 J-Link 8 连接配置
    嵌入式之认识内存
    Windows10光驱位硬盘不识别
    无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-l1-1-0.dll上
    博客一夜回到解放前
    电动汽车-电池
    STM32书集选择
    嵌入式—学习嵌入式系统需具备的条件、方法及步骤
    Modbus抄表中应用到CRC8+CRC16+CRC32源码
    USART输出乱码3F,RS485抄表
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8728470.html
Copyright © 2020-2023  润新知