/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 比较版本号
 * @param version1 string字符串 
 * @param version2 string字符串 
 * @return int整型
 */

/**
 * 解法一:分割截取
 * 思路:
 *(1)先根据.号分割成字符串数组,获取两个数组中的最大长度值,
 *(2)按顺序遍历比较,详细过程看以下代码
 * 时间复杂度:O(max(n, m))
 * 空间复杂度:O(max(n, m))
 */
export function compare(version1: string, version2: string): number {
    const arr1: any[] = version1.split('.')
    const arr2: any[] = version2.split('.')
    const maxLen = Math.max(arr1.length, arr2.length)
    
    for (let i = 0; i < maxLen; i++) {
        // arr1[i] - '0' ,js 会强制转换成 number 然后相减
        // 例如:('01' - '0'), 结果是 1 (number 类型)
        // @ts-ignore
        const num1 = arr1[i] ? arr1[i] - '0' : 0 
        // @ts-ignore
        const num2 = arr2[i] ? arr2[i] - '0' : 0
        if (num1 > num2) return 1
        if (num1 < num2) return -1
    }
    
    return 0
}

一站式解决前端面试高频算法题

https://github.com/hovinghuang/fe-agorithm-interview