采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
let o = (j[0] ^ 1).toString().repeat(j.length); 这里的(j[0] ^ 1),j[0]是0,(j[0] ^ 1)取到了1,测试正常, 但是这里不加[0],(j ^ 1)也能取到1,但是测试的时候会报错,请问这是为什么呢
00^1=1
11^1=10
如果是1开头,那不懵了。
j^1的意义是什么呢?你知道咱们这么做的目的是什么嘛
j = str.match(/^(0+|1+)/)[0],在这个地方取到的是匹配str的首尾连起来的字符,为00,或者0,或者11,或者1。 使用o = (j[0]^1),则(j[0]^1)这里的定义是j和1只有一个为1,o才能为1,而这里已经定义了1,所以j[0]为1的时候o为0,j[0]为1的时候o为0。 取j[0]是表示取j字符串的第0个子字符,即1或者0。 可是获取到的j为00,进行 o = (j ^ 1)的时候,o也是能取到1的,那为什么运行时会报错呢
目的取1位进行位运算,00位运算没有意义
登录后可查看更多问答,登录/注册
填补前端同学的算法短板,掌握面试中最常见的算法与数据结构
1.4k 9
971 8
1.1k 8
1.0k 8
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号