专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

leetcode 438. 找到字符串中所有字母异位词 [PHP]

438. 找到字符串中所有字母异位词

    function findAnagrams($s, $t) {
        $ret = [];
        $needs = $windows = [];
        $len_s = strlen($s);
        $len_t = strlen($t);
        $left = $right = 0;
        for ($i = 0; $i < $len_t; $i++) {
            $needs[$t[$i]]++;
        }
        $match = 0;
        while ($right < $len_s) {
            $r_str = $s[$right];
            if (isset($needs[$r_str])) {
                $windows[$r_str]++;
                if ($windows[$r_str] == $needs[$r_str]) {
                    $match++;
                }
            }
            $right++;

            while ($match == count($needs)) {
                if ($right - $left == $len_t) {
                    $ret[] = $left;
                }
                $l_str = $s[$left];
                if (isset($needs[$l_str])) {
//                    if (--$windows[$l_str] != $needs[$l_str]) {
//                        $match--;
//                    }
                    if (--$windows[$l_str] < $needs[$l_str]) {
                        $match--;
                    }
                }
                $left++;
            }
        }
        return $ret;
    }

跟之前的滑动窗口一个模板,只不过是在试图改变窗口left时检测的条件不一样。另外这里的异位词竟然包括顺序也相同的词。。。。

文章永久链接:https://tech.souyunku.com/45140

未经允许不得转载:搜云库技术团队 » leetcode 438. 找到字符串中所有字母异位词 [PHP]

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们