package main

import (
	"strconv"
	"strings"
)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 比较版本号
 * @param version1 string字符串 
 * @param version2 string字符串 
 * @return int整型
*/
func compare( version1 string ,  version2 string ) int {
    // write code here
    s1 := strings.Split(version1, ".")    //按照.号拆分成数组
    s2 := strings.Split(version2, ".")
    i := 0
    j := 0
    for i < len(s1) && j < len(s2) {    // 遍历判断
        a, _ := strconv.Atoi(s1[i])
        b, _ := strconv.Atoi(s2[j])
        if a > b {    // 若s1的元素>s2的元素
            return 1
        } else if a < b {
            return -1
        } else {    
            if i == len(s1)-1 && j == len(s2)-1 { //判断是否是最后一个修订号,若是,说明相等,返回0
                return 0
            }
        }
        i++
        j++
    }
    for i < len(s1) {    // 判断前面循环结束是否是s2先结束导致的
        a, _ := strconv.Atoi(s1[i])
        if a > 0 {    // 剩余修订号任意找到一个大于0的数,则a>b
            return 1
        }
        i++
    }


    for j < len(s2) {    // 判断前面循环结束是否是s1先结束导致的
        b, _ := strconv.Atoi(s2[j])
        if b > 0 {    // 剩余修订号任意找到一个大于0的数,则a<b
            return -1
        }
        j++
    }
    
    return 0    // 按理不可能走到这一步的。。。
}