不积跬步,无以至千里;不积小流,无以成江海
时间:2020-6-17 地址:https://leetcode.cn/contest/weekly-contest-298 讨论:
A: 兼具大小写的最好英文字母
思路:字符串统计
关键点:字符串与ASCII 字符编码相互转换
function greatestLetter(s: string): string {
let couter = new Array(128).fill(false);
for (let char of s) {
couter[char.charCodeAt(0)] = true;
}
for (let i = 90; i >= 65; i--) {
if (couter[i] && couter[i + 32]) return String.fromCharCode(i);
}
return '';
};
总结:
B: 个位数字为 K 的整数之和
思路:数学问题
关键点:
function minimumNumbers(num: number, k: number): number {
if (!num) return 0;
let digit = num % 10;
for (let i = 1; i < 11; i++) {
let target = i * k;
if (target <= num && target % 10 == digit) return i;
}
return -1;
};
总结:
C: 小于等于 K 的最长二进制子序列
思路:贪心
关键点:贪心
function longestSubsequence(s: string, k: number): number {
let numStr = '';
const n = s.length, m = s.split('').reduce((a, c) => a + Number(c), 0);
for (let i = n - 1; i >= 0; i--) {
const cur = s.charAt(i).concat(numStr);
if (parseInt(cur, 2) > k) break;
numStr = cur;
}
return n - m + numStr.split('').reduce((a, c) => a + Number(c), 0);
};
总结:
D:
思路:
关键点:
总结:
复盘
A: a - A = 32 = 26 + 6 ✅ 细节有耗时
B: ❌ 边界错误 [0, 9) 正确边界 [1, 11)
C:
D: