数组,字符串---对位相加或者比较之类的题目

前言

力扣有这么一种题,就是给你两个数组或者字符串进行对位比较或者相加,做这种题的时候,我每次都会给自己挖坑,增大了代码量,比如,

    1. 比较版本号
    1. 字符串相加

就以下面这个例子说下的我给自己挖的坑

165. 比较版本号

先看看我写的

我是上来先把两个数组差的位数补齐,注意for循环就给自己挖了坑,因为不知道哪个数组长,所以必须补位,否则有可能取不到

/**
 * @param {string} version1
 * @param {string} version2
 * @return {number}
 */
var compareVersion = function (version1, version2) {
  let v1 = version1.split('.')
  let v2 = version2.split('.')
  let i2 = 0

  //   v1和v2两个数组长度可能不相同
  if (v1.length > v2.length) {
    let count = v1.length - v2.length
    while (count--) {
      v2.push(0)
    }
  }
  if (v1.length < v2.length) {
    let count = v2.length - v1.length
    while (count--) {
      v1.push(0)
    }
  }

// 坑
  for (let i1 = 0; i1 < v1.length; i1++) {
    n1 = parseInt(v1[i1])
    n2 = parseInt(v2[i2])
    if (n1 > n2) {
      return 1
    } else if (n1 < n2) {
      return -1
    }
    i2++
  }
  return 0
}

其实直接while

利用两个变量分别遍历两个数组,利用while循环,只要两个数组中任意一个数组还有没取到的元素,就继续进行循环,先遍历完的数组用0代替

/**
 * @param {string} version1
 * @param {string} version2
 * @return {number}
 */
var compareVersion = function (version1, version2) {
  let v1 = version1.split('.')
  let v2 = version2.split('.')
  let i1 = 0
  let i2 = 0

  while(i1 < v1.length || i2 < v2.length) {
      n1 = parseInt(v1[i1]) || 0
      n2 = parseInt(v2[i2]) || 0
      if(n1 > n2) return 1
      if(n1 < n2) return -1
      i1++
      i2++
  }

  return  0
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值