算法
找零问题
动态规划
将问题拆分成小问题,寻求答案
const coinsType = [1,5,10,20,50,100]
const MinConinChange = (coins:number, index?:number) => {
if(index === undefined){
index = coinsType.length - 1;
}
if(index < 0 || coins < 0){
return;
}
var nowCoin = coinsType[index];
var num = Math.floor(coins / nowCoin);
if(num){
console.log(num + '个' + nowCoin + '块');
}
var remain = coins - num * nowCoin;
remain && MinConinChange(remain, --index);
}
MinConinChange(11384)
贪心算法
期盼通过每个阶段的局部最优选择(当前最好的解),从而达到全局的最优(全局最优)
const coinsType = [1,5,10,20,50,100]
const MinConinChange = (coins:number) => {
var total = 0;
for(var i = coinsType.length; i--;){
var coin = coinsType[i];
var num = 0;
while(total + coin < coins){
++num;
total += coin;
}
num && console.log(num + '个' + coin + '块');
}
}
MinConinChange(11384)
正则
var tmp = `aaa
<color:xxx>
<bold:zzz>
aaaa
</bold>
</color>
ssss
<color:yyy>
bbb
</color>
mmm
<bold:zzz>
ccc
</bold>`;
const filterStr = (str: string) => {
var special = ['color', 'bold'];
var format = ['color', 'font-weight']
special.map((item, index) => {
var reg = new RegExp(`<${item}:(.*?)>([\\w\\W]*?)</${item}>`, 'g');
str = str.replace(reg, ($0, $1, $2) => {
return `<div style="${format[index]}:${$1}">${$2}</div>`;
});
});
return str;
}
console.log(filterStr(tmp))