const render =useCallback(()=>{let list =[]for(var i =0; i < range.max; i++){list.push(<li key={i}>{i}</li>)}return list
},[range])// 第二个参数表依赖项,依赖变化了才会重新渲染const Foo =memo(props =>{console.log('useCallback')return(<><p>{props.count}</p><ul>{props.render()}</ul></>)})
useMemo
固定的是值,会将函数执行
const render =useMemo(()=>{let list =[]for(var i =0; i < range.max; i++){list.push(<li key={i}>{i}</li>)}return list
},[range])// 注意:子组件的render函数不需要执行const Foo =memo(props =>{console.log('useCallback')return(<><p>{props.count}</p><ul>{props.render}</ul></>)})
问题描述 思路:
1.首先生成n个括号 2.左括号数量(记为l)不超过n 3.右括号数量(记为r)不超过n,且优先生成左括号(即 l < r) 4.需要设计一个递归式h(str,l,r)
// 一开始,str , l 0, r 0
// 第一步进去,添加左括号, str(, l 1, r 0
// 然后因为 l < n . r < l 所以…
描述 思路:
最多重复s.length次使用String.prototype.repeat(n)方法可以将字符串重复n次
核心:
while( i < len/2){if( s s.slice(0,i).repeat(len /i) ) {return ture;}
}总体代码:
var repeatedSubstringPattern function(s) {let i 1;let len s.length;while (i …