/**
* @param {string} num
* @return {boolean}
*/
var isAdditiveNumber = function(num) {
let flag = false
var addStrings = function(num1, num2) {
let arr1 = num1.split('').map(item=>{return Number(item)})
let arr2 = num2.split('').map(item=>{return Number(item)})
let jin = 0
let str = ''
while(arr1.length || arr2.length || jin){
let number1 = arr1.pop() || 0
let number2 = arr2.pop() || 0
str =(jin + number2 + number1)%10 + str
jin = Math.floor((jin + number2 + number1)/10)
}
return str};
function dfs(pre,curr,rest){
if(pre.length >1 && pre[0] === "0"){
return
}
if(curr.length >1 && curr[0] === "0"){
return
}
if(rest === ''){
flag = true
return
}
let total = addStrings(pre,curr)
if(rest.length < total.length){
return
}
let next = rest.substring(0,total.length)
if(next === total){
dfs(curr,next,rest.substring(total.length))
}}// i是第一个字符串尾部对应的索引
// j是第二个字符串尾部对应的索引
for(let i=0;
i
这道题讲道理写了这么多行代码,用了两个中难度的解决办法,也算是个复杂题了吧?
【Leetcode306累加数(递归解决)】解题思路:
i和j分别表示第一个数的截至位置和第二个数的截至位置。
这样就算是确定了开头的两个数字,此外还需要一个函数用来计算两个字符串的和。剩下的就是修一下边边角角,对于一些特殊条件的过滤了。上面的写法还有一些优化空间,不过今天没空搞了,有不理解的可以留言交流下。
推荐阅读
- 计算机网络|【前端vue——系列6】vue连接摄像头并实现摄像头暂停,计时,截图到本地等功能
- vue.js|vue 项目调取本地摄像头可切换摄像头并拍照生成图片
- vue.js|VUE实现调用摄像头和拍照功能
- javascript|说一说实战项目升级从vue2到vue3 之main.js 区别
- Vue日常总结|后台管理系统模板
- 技术·教程|Javascript中遇到的问题: 缓动动画函数的封装
- web前端基础学习笔记|web前端学习649-654(JavaScript作用域---作用域,变量的作用域,作用域链)
- 案例|动画之匀速加速减速缓冲运动(加轮播图)
- javascript|JavaScript之setTimeout与setInterval的用法与区别