# 题目描述

给你两个版本号 version1version2 ,请你比较它们。

版本号由一个或多个修订号组成,各修订号由一个 '.' 连接。每个修订号由 多位数字 组成,**可能包含 前导零 **。每个版本号至少包含一个字符。**修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 **,以此类推。例如,2.5.330.1 都是有效的版本号。

比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 001 相等 。如果版本号没有指定某个下标处的修订号,则该修订号视为 0 。例如,版本 1.0 小于版本 1.1 ,因为它们下标为 0 的修订号相同,而下标为 1 的修订号分别为 0 和 1 ,0 < 1

1.01.0.0是相等的

返回规则如下:

  • 如果 version1 > version2 返回 1
  • 如果 version1 < version2 返回 -1
  • 除此之外返回 0

# 测试用例

示例 1:

  • 输入:version1 = "1.01", version2 = "1.001"
  • 输出:0
  • 解释:忽略前导零,"01" 和 "001" 都表示相同的整数 "1"

示例 2:

  • 输入:version1 = "1.0", version2 = "1.0.0"
  • 输出:0
  • 解释:version1 没有指定下标为 2 的修订号,即视为 "0"

示例 3:

  • 输入:version1 = "0.1", version2 = "1.1"
  • 输出:-1
  • 解释:version1 中下标为 0 的修订号是 "0",version2 中下标为 0 的修订号是 "1" 。0 < 1,所以 version1 < version2

# 代码实现

// 输入

var __readline = require("readline-sync");
__readline.setDefaultOptions({ prompt: "" });
var readline = __readline.prompt;

console.log("请输入version1: ");
let version1 = readline();

console.log("请输入version2: ");
let version2 = readline();

/**
 * @param {string} version1
 * @param {string} version2
 * @return {number}
 */
var compareVersion = function (version1, version2) {
  let v1 = version1.split(".").map(Number);
  let v2 = version2.split(".").map(Number);

  if (v1.length > v2.length) {
    let gap = v1.length - v2.length;
    while (gap) {
      v2.push(0);
      gap--;
    }
  } else if (v1.length < v2.length) {
    let gap = v2.length - v1.length;
    while (gap) {
      v1.push(0);
      gap--;
    }
  }
  for (let i = 0; i < v1.length; i++) {
    if (v1[i] > v2[i]) {
      return 1;
    } else if (v1[i] < v2[i]) {
      return -1;
    }
  }
  return 0;
};

const res = compareVersion(version1, version2);
console.log("结果为: ", res);

/* 
  请输入version1:
  1.01
  请输入version2:
  1.001
  结果为:  0

  请输入version1:
  1.0
  请输入version2:
  1.0.0
  结果为:  0

  请输入version1:
  0.1
  请输入version2:
  1.1
  结果为:  -1
*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67