成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[LeetCode] Compare Version Numbers

jzman / 3460人閱讀

摘要:首先找整數(shù)部分的坐標(biāo)段,和都指向初值,令和一直向后遍歷到小數(shù)點(diǎn)為止。然后用將的整數(shù)段轉(zhuǎn)化為數(shù)值,進(jìn)行比較若結(jié)果為大于或小于關(guān)系,直接返回結(jié)果若結(jié)果為相等,進(jìn)行小數(shù)部分的比較。

Problem

Compare two version numbers version1 and version2.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

You may assume that the version strings are non-empty and contain only digits and the . character.
The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37
Note

看到一個(gè)巧妙的解法,分享一下:
version1,version2都轉(zhuǎn)換為char array,然后分別用兩個(gè)指針s1, i1s2, i2展開(kāi)循環(huán)。
首先找整數(shù)部分的坐標(biāo)段,s1s2都指向初值0,令i1i2一直向后遍歷到小數(shù)點(diǎn)為止。
然后用Integer.valueOf(someStr.substring(s1, i1))version1, version2的整數(shù)段轉(zhuǎn)化為數(shù)值,進(jìn)行比較:若結(jié)果為大于或小于關(guān)系,直接返回結(jié)果;若結(jié)果為相等,進(jìn)行小數(shù)部分的比較。
比較小數(shù)大小,只比高位即可,所以可以沿用這個(gè)循環(huán),只需要繼續(xù)用i1i2向后移動(dòng),同時(shí)賦坐標(biāo)值給s1s2。這樣轉(zhuǎn)化數(shù)值函數(shù)中的小數(shù)段每次遍歷就只有一個(gè)字符:str.substring(i1, i1),即str.charAt(i1)。

Solution
public class Solution {
    public int compareVersion(String version1, String version2) {
    char[] v1 = version1.toCharArray();
    char[] v2 = version2.toCharArray();
    int i1 = 0,i2 = 0;
    int s1 = 0,s2 = 0;
    while(i1 < v1.length || i2 < v2.length){
        while(i1 < v1.length && v1[i1] != ".") i1++;
        while(i2 < v2.length && v2[i2] != ".") i2++;
        int a = s1 < v1.length ? Integer.valueOf(version1.substring(s1,i1)) : 0;
        int b = s2 < v2.length ? Integer.valueOf(version2.substring(s2,i2)) : 0;
        if(a > b) return 1;
        if(a < b) return -1;
        s1 = ++i1;
        s2 = ++i2;
    }
    return 0;
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64789.html

相關(guān)文章

  • [Leetcode] Compare Version Numbers 比較版本號(hào)

    摘要:注意因?yàn)榉椒ㄝ斎氲氖且粋€(gè)正則表達(dá)式所以不能直接用,而是要用,而的要轉(zhuǎn)義,所有要用代碼按照進(jìn)行分割比對(duì)相應(yīng)的子串如果某個(gè)版本號(hào)更長(zhǎng),判斷其多余部分是否是,如果不是,則較長(zhǎng)的較大,否則是一樣的。 Compare Version Numbers Compare two version numbers version1 and version2. If version1 > version2...

    FrozenMap 評(píng)論0 收藏0
  • [LeetCode] Compare Version Numbers

    Problem Compare two version numbers version1 and version2.If version1 > version2 return 1; if version1 < version2 return -1;otherwise return 0. You may assume that the version strings are non-empty an...

    Alex 評(píng)論0 收藏0
  • [LeetCode] 165. Compare Version Numbers

    Problem Compare two version numbers version1 and version2.If version1 > version2 return 1; if version1 < version2 return -1;otherwise return 0. You may assume that the version strings are non-empty an...

    趙春朋 評(píng)論0 收藏0
  • leetcode165. Compare Version Numbers

    摘要:題目要求也就是說(shuō),比較版本號(hào)。思路一利用通過(guò)方法將版本通過(guò)分隔開(kāi),然后將每一段版本從轉(zhuǎn)化為進(jìn)行比較思路二自己實(shí)現(xiàn)轉(zhuǎn)化為自己實(shí)現(xiàn)將轉(zhuǎn)化為,可以通過(guò)循環(huán)的方式。這是一個(gè)基本的算法。 題目要求 Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < ve...

    Mike617 評(píng)論0 收藏0
  • [LintCode/LeetCode] Find Median From / Data Stream

    摘要:建立兩個(gè)堆,一個(gè)堆就是本身,也就是一個(gè)最小堆另一個(gè)要寫一個(gè),使之成為一個(gè)最大堆。我們把遍歷過(guò)的數(shù)組元素對(duì)半分到兩個(gè)堆里,更大的數(shù)放在最小堆,較小的數(shù)放在最大堆。同時(shí),確保最大堆的比最小堆大,才能從最大堆的頂端返回。 Problem Numbers keep coming, return the median of numbers at every time a new number a...

    zxhaaa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<