zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    我喜欢的女孩有了男友 :(
    两个月后,我又回来了。
    准备辞职,想看看老板知道我要辞职之后的表情。
    已经交了辞职报告,今天下午跟老板谈一谈。
    上班第十天
    一年了,回来看看。
    上班第十一天
    领到了离职通知单
    对上班失去了兴趣
    还没有拿到回家的火车票,惨了啊。
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8728470.html
Copyright © 2011-2022 走看看