/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @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
}
一站式解决前端面试高频算法题