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

  • 相关阅读:
    Leetcode Unique Binary Search Trees
    Leetcode Decode Ways
    Leetcode Range Sum Query 2D
    Leetcode Range Sum Query
    Leetcode Swap Nodes in Pairs
    Leetcode Rotate Image
    Leetcode Game of Life
    Leetcode Set Matrix Zeroes
    Leetcode Linked List Cycle II
    CF1321A
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8728470.html
Copyright © 2011-2022 走看看