美文网首页大前端
JS连续数字与间断数字的算法题

JS连续数字与间断数字的算法题

作者: DiligentLeo | 来源:发表于2019-08-03 13:48 被阅读0次

    编程题,请写一个函数,完成以下功能

    输入 '1, 2, 3, 5, 7, 8, 10' 输出 '1~3, 5, 7~8, 10'

    输入

    image
    输出
    image

    解题分析:
    如果连续数字的话,就取连续的第一个数和最后一个数,中间用~隔开。如果不连续就用,隔开。

    function transformStr(str) {
        let arr = str.split(',')
        let i = 0
        let ret = []
        for (let j = 1; j <= arr.length; j++) {
            if (arr[j] - arr[j - 1] !== 1) {
                ret.push(j - i === 1 ? arr[i] : `${arr[i]}~${arr[j - 1]}`)
                i = j
            }
        }
        return ret.join(',')
    }
    
    transformStr('1,2,3,5,7,8,9,11,12')
    out "1~3,5,7~9,11~12"
    
    const nums1 = [1, 2, 3, 5, 7, 8, 10];
    function simplifyStr(num) {
      var result = [];
      var temp = num[0]
      num.forEach((value, index) => {
        if (value + 1 !== num[index + 1]) {
          if (temp !== value) {
            result.push(`${temp}~${value}`)
          } else {
            result.push(`${value}`)
          }
          temp = num[index + 1]
        }
      })
      return result;
    }
    
    
    console.log(simplifyStr(nums1).join(','))
    out 1~3,5,7~8,10
    
    

    相关文章

      网友评论

        本文标题:JS连续数字与间断数字的算法题

        本文链接:https://www.haomeiwen.com/subject/fhdjdctx.html