ARTS Week 41

Algorithm

本周的算法题为 438. 找到字符串中所有字母异位词

给定两个字符串 sp,找到 s 中所有 p 的 异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

实现代码如下:

const findAnagrams = function (s, p{
    if (p.length > s.length) {
        return [];
    }

    let pCount = new Array(26).fill(0); 
    let sCount = new Array(26).fill(0);
    let result = [];

    for (let char of p) {
        pCount[char.charCodeAt(0) - 'a'.charCodeAt(0)] += 1;
    }
    for (let i = 0; i < p.length; i++) {
        sCount[s.charCodeAt(i) - 'a'.charCodeAt(0)] += 1;
    }

    if (isEqual(pCount, sCount)) {
        result.push(0);
    }
    for (let i = p.length; i < s.length; i++) {
        sCount[s.charCodeAt(i - p.length) - 'a'.charCodeAt(0)] -= 1;
        sCount[s.charCodeAt(i) - 'a'.charCodeAt(0)] += 1;
        if (isEqual(pCount, sCount)) {
            result.push(i - p.length + 1);
        }
    }

    function isEqual(count1, count2{
        for (let i = 0; i < 26; i++) {
            if (count1[i] !== count2[i]) {
                return false;
            }
        }
        return true;
    }

    return result;

};

解题思路:

创建pCountsCount字母表,通过一个字母的Unicode编码减去字母a的Unicode编码,得到其在字母表中的位置,并且将其计数,通过滑动窗口,左减右加,最后通过对比相同位置计数是否相等,来确定是否是字母异位词。

Review

Eye colour change is riskiest cosmetic surgery - Breaking News English Lesson

全世界越来越多的人选择整容手术来提升他们的容貌。潜在患者可能不知道的是,改变眼睛颜色的手术是风险最大的。在线眼镜店 Overnight Glasses 进行的研究断言,眼部颜色手术有92%的可能性出现并发症。眼睛颜色变化在研究人员最危险的整容手术名单中名列前茅。此类手术包括虹膜植入物和激光色素去除。还有一个称为角膜色素沉着的程序。这是一种永久性的眼睛颜色变化,其中使用精密激光技术将特殊的着色剂插入眼睛中。

今年早些时候,美国眼科学会发布了对眼睛变色手术的警告。Ashley Brissette 博士强调了可能出错的事情。这些包括染料泄漏、过敏反应、感染、对光敏感、可能导致混浊或视力丧失的角膜损伤,以及最终失明。她说:“我们用眼睛做的任何事情,都必须非常非常小心。研究人员表示,恢复时间可能长达两个月,手术的平均费用为 12,000 美元。眼科医生 Nicole Bajic 建议戴彩色隐形眼镜,而不是动刀。她说,“可以给你你想要的外观,而不会危及你的眼睛健康”。

Tip

在使用npm i命令给项目安装依赖时,出现卡住的情况,等了好久,也没见成功或者中断,这就无法入手去解决问题。使用命令npm install --verbose可以看到安装的更多信息,便于排查问题。

Share

“珍惜现在,就是穿越时空。”

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AR7_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值