1.小美的外卖订单
简单的加法逻辑,需要注意的是各个数据的边界问题
- 折扣价不能超过原价
- 减的价格不能超过满的价格
- 满减优惠仅限原价购入
const rl = require("readline").createInterface({ input: process.stdin });
void (async function () {
let count = 0;
let list = [];
let man = 0,jian = 0;
rl.on("line", function (line) {
if (count === 0) {
count = parseInt(line);
} else if (list.length < count) {
const item = line.split(" ");
list.push([parseFloat(item[0]), parseFloat(item[1])]);
} else {
const item = line.split(" ");
man = parseFloat(item[0]);
jian = parseFloat(item[1]);
console.log(getPrices(list, man, jian));
}
});
})();
function getPrices(list, man, jian) {
if(jian > man || man <= 0 || jian <= 0) return 'error'
let prices1 = 0,
prices2 = 0;
for (let i = 0; i < list.length; i++) {
if (list[i][1] > list[i][0] || list[i][1] <= 0 || list[i][0] <= 0) return "error";
prices1 += list[i][0];
prices2 += list[i][1];
}
if (prices1 >= man) {
prices1 -= jian;
}
return prices1 > prices2 ? prices2.toFixed(2) : prices1.toFixed(2);
}
2.小美的字符串匹配度
- 第一步计算s和t中不操作的匹配度,也就是s[i] === t[i] 的个数
- 第二步,计算对t操作一次能增加的匹配的
const rl = require("readline").createInterface({ input: process.stdin });
void async function () {
let length = 0;
let s = '',t = '';
// Write your code here
rl.on('line',function(line){
if(length === 0) {
length = parseInt(line)
} else if(s === '') {
s = line;
} else {
t = line;
console.log(computed(s,t))
}
})
}()
function computed(s, t) {
//计算原本的匹配度
let baseCount = 0;
//记录无需交换操作的下标
let used = new Array(s.length).fill(false);
for (let i = 0; i < s.length; i++) {
if (s[i] == t[i]) {
used[i] = true;
baseCount++;
}
}
//计算操作一次增加的匹配度 1 or 2
let changeCount = 0;
for (let i = 1; i < t.length; i++) {
//原本就匹配的,无需交换
if (used[i]) continue;
for (let j = i + 1; j < s.length; j++) {
//原本就匹配的,无需交换
if (used[j]) continue;
// 满足交换后一个相等 继续执行
// 满足两个相等