IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 【力扣】567. 字符串的排列 -> 正文阅读

[PHP知识库]【力扣】567. 字符串的排列

目录

方法: 算是暴力遍历(PHP)

测试结果:

优化:

测试结果:

官方链接:


网上的PHP解法感觉真的很少,是我的错觉么。

方法: 算是暴力遍历(PHP)

class Solution {

    /**
     * @param String $s1
     * @param String $s2
     * @return Boolean
     */
    function checkInclusion($s1, $s2) {
        $len1 = strlen($s1);
        $len = strlen($s2);
        $arrs = str_split($s2);
        $arrs1 = str_split($s1);
        $n = $strlen = strlen($s1);

        for ($i = 0, $j = $strlen - 1; $j < $len; $i++, $j++) {
	        $arr[$i] = array_count_values(str_split(substr($s2, $i, $strlen)));
	        ksort($arr[$i]);
        }

        $resultArray1 = array_count_values($arrs1);
        ksort($resultArray1);

        foreach ($arr as $value) {
	        if ($resultArray1 === $value) {
		        return true;
	        }
        }
        return false;
    }
}

解释: 第一次循环,用子串的长度分割获得对象数组,统计数组中各个元素出现的次数,然后再按照key来升序排序,第二次循环,和子串依次对比,如果相等就 return true。

测试结果:

执行用时:1668 ms, 在所有?PHP?提交中击败了10.00%的用户

内存消耗:37.7 MB, 在所有?PHP?提交中击败了6.00%的用户

通过测试用例:106?/?106

优化:

刚提交完,发现可以优化到只用一次 for 循环即可。提高了速度。

class Solution {

    /**
     * @param String $s1
     * @param String $s2
     * @return Boolean
     */
    function checkInclusion($s1, $s2) {
        $len1 = strlen($s1);
        $len = strlen($s2);
        $arrs = str_split($s2);
        $arrs1 = str_split($s1);
        $n = $strlen = strlen($s1);

        $resultArray1 = array_count_values($arrs1);
        ksort($resultArray1);

        for ($i = 0, $j = $strlen - 1; $j < $len; $i++, $j++) {
	        $arr[$i] = array_count_values(str_split(substr($s2, $i, $strlen)));
	        ksort($arr[$i]);
            if ($resultArray1 === $arr[$i]) {
                return true;
            }
        }

        return false;
    }
}

测试结果:

执行用时:928 ms, 在所有?PHP?提交中击败了22.00%的用户

内存消耗:36.7 MB, 在所有?PHP?提交中击败了6.00%的用户

通过测试用例:106?/?106

官方链接:

力扣https://leetcode-cn.com/problems/permutation-in-string/

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 11:59:30  更:2021-10-06 12:00:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 -2025/2/27 14:17:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码