不积跬步,无以至千里;不积小流,无以成江海

时间:2020-6-17 地址:https://leetcode.cn/contest/weekly-contest-298 讨论:

A: 兼具大小写的最好英文字母

思路:字符串统计
关键点:字符串与ASCII 字符编码相互转换
image.png

  1. function greatestLetter(s: string): string {
  2. let couter = new Array(128).fill(false);
  3. for (let char of s) {
  4. couter[char.charCodeAt(0)] = true;
  5. }
  6. for (let i = 90; i >= 65; i--) {
  7. if (couter[i] && couter[i + 32]) return String.fromCharCode(i);
  8. }
  9. return '';
  10. };

总结:

B: 个位数字为 K 的整数之和

思路:数学问题
关键点:

  1. function minimumNumbers(num: number, k: number): number {
  2. if (!num) return 0;
  3. let digit = num % 10;
  4. for (let i = 1; i < 11; i++) {
  5. let target = i * k;
  6. if (target <= num && target % 10 == digit) return i;
  7. }
  8. return -1;
  9. };

总结:

C: 小于等于 K 的最长二进制子序列

思路:贪心
关键点:贪心

  1. function longestSubsequence(s: string, k: number): number {
  2. let numStr = '';
  3. const n = s.length, m = s.split('').reduce((a, c) => a + Number(c), 0);
  4. for (let i = n - 1; i >= 0; i--) {
  5. const cur = s.charAt(i).concat(numStr);
  6. if (parseInt(cur, 2) > k) break;
  7. numStr = cur;
  8. }
  9. return n - m + numStr.split('').reduce((a, c) => a + Number(c), 0);
  10. };

总结:

D:

思路:
关键点:

总结:

复盘

image.png

A: a - A = 32 = 26 + 6 ✅ 细节有耗时
B: ❌ 边界错误 [0, 9) 正确边界 [1, 11)
C:
D: