LeeCode 38 报数

原题解来自 https://leetcode-cn.com/problems/count-and-say/solution/jsdi-gui-jie-jue-by-wo-shi-gao-xiao-de/

看了这个哥们的解法,觉得特别好,顺便复习了下正则

var countAndSay = function(n) {
    if(n==1){
        return n.toString()
    }
    var tempArr = countAndSay(n-1).match(/(\d)\1*/g)  // 该正则进行相同分组,调用match方法得出接下来用的数组
    var result = ""
    tempArr.forEach((item)=>{              // 循环上面得到的数组,然后取每个的长度(题里说的几个),还有第一个数字(题里说的哪个数)
        var lth = item.length.toString()
        var num = item.substring(0,1)
        result = result+lth+num
    })
    return result   //最后返回结果
    
};

特别要解释下这个正则

(\d)匹配字符

   \1 匹配第一个圆括号内容(同理\2 匹配第二个圆括号内容)

https://www.cnblogs.com/gddcz/p/9131597.html

  /g 全局匹配,而不是只返回第一个符合的记录

https://www.cnblogs.com/ldq678/p/9375305.html

举个例子

kk = "111221"

kk.match(/(\d)\1*/g)
 ["111", "22", "1"]

他会把重复的数字合并为一组,这个正则绝了。。。看评论说这种饶舌题目是出给嘻哈程序员的吗,笑死我了~哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值