Leetcode - Integer to Roman
Leetcode - Two City Scheduling

Leetcode - Compare Version Numbers

violet posted @ Jun 03, 2020 07:15:54 AM in 算法 with tags Algorithm Golang array string , 266 阅读

https://leetcode.com/problems/compare-version-numbers/

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.

You may assume the default revision number for each level of a version number to be 0. For example, version number 3.4 has a revision number of 3 and 4 for its first and second level revision number. Its third and fourth level revision number are both 0.

Example 1:

Input: version1 = "0.1", version2 = "1.1"
Output: -1

 

func compareVersion(version1 string, version2 string) int {
    v1 := strings.Split(version1, ".")
    v2 := strings.Split(version2, ".")
    
    i := 0
    j := 0
    for i < len(v1) && j < len(v2) {
        num1, _ := strconv.Atoi(v1[i])
        num2, _ := strconv.Atoi(v2[j])
       
        if num1 > num2 {
            return 1
        } else if num1 < num2 {
            return -1
        }
        i++
        j++
    }
    num1 := 0
    for i < len(v1) {
        tmp, _ := strconv.Atoi(v1[i])
        num1 += tmp
        i++
    }
    num2 := 0
    for j < len(v2) {
        tmp, _ := strconv.Atoi(v2[j])
        num2 += tmp
        j++
    }
    if num1 > num2 {
        return 1
    } else if num1 < num2 {
        return -1
    }
    return 0
}

time complexity: O(n)


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter