Algorithm

本周的算法题为 1805. 字符串中不同整数的数目

给你一个字符串 word ,该字符串由数字和小写英文字母组成。

请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123""34""8""34"

返回对 word 完成替换后形成的 不同 整数的数目。

只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。

示例 1

输入word = "a123bc34d8ef34"
输出3
解释不同的整数有 "123""34"  "8" 注意"34" 只计数一次

实现代码如下:

const numDifferentIntegers = function (word) {
    // 1. 匹配所有的数字,返回一个数组,每个元素是一个数字字符串
    const nums = word.match(/\d+/g);
    // 2. 如果没有匹配到数字,返回0
    if (nums === null) {
        return 0;
    }
    // 3. 去掉前导0,返回一个新的数组,每个元素是一个数字字符串
    nums.forEach((n, i) => {
        nums[i] = n.replace(/^0+/, '');
    });
    // 4. 用Set去重
    const set = new Set(nums); // 去重
    // 5. 返回Set的大小
    return set.size;
};

解题思路:

  1. 匹配所有的数字,返回一个数组,每个元素是一个数字字符串。
  2. 如果没有匹配到数字,返回0。
  3. 去掉前导0,返回一个新的数组,每个元素是一个数字字符串。
  4. 用Set去重。
  5. 使用 set.size 返回大小,即为所求的值。

Review

Scientists find why most ginger cats are male - Breaking News English Lesson

科学家们揭开了一个关于猫科动物的长期谜团。日本九州大学的遗传学家发现,为什么十只橘猫中有八只是雄性。佐佐木博之博士发现,X 染色体上的一个突变导致了一种此前未知的“橘色基因”。佐佐木博士说:“找到这个基因一直是我的梦想,所以终于破解了这个谜团,我感到非常高兴。”这种基因负责动物皮肤的色素沉着。雄性哺乳动物有一条 X 染色体和一条 Y 染色体。如果雄性猫的 X 染色体上有这种基因,它就会是橘色的。由于雌性猫有两条 X 染色体,所以两条染色体上都需要有这种基因,猫才会是橘色的。这种情况发生的可能性较小。

佐佐木博士及其同事的研究成果已发表在《当代生物学》杂志上。在这项研究中,研究人员分析了 18 只猫的 DNA。其中 10 只猫的毛色为橘色。研究人员发现,所有橘色猫都有一种名为 ARHGAP36 的基因突变,而非橘色猫则没有这种突变。佐佐木博士表示,猫主人通常会将毛色与性格特征联系起来。他写道:“许多猫主人坚信不同毛色和花纹与不同性格有关。目前尚无科学证据支持这一观点,但这确实是个有趣的想法,我很想进一步探究。”他还表示,橘色猫可能具有某些共同的行为特征,因为它们大多是雄性。

Tip

腾讯 ARC 图片修复工具,挺好用的。https://arc.tencent.com/zh/ai-demos/faceRestoration

Share