567. Permutation in String

复制代码
package LeetCode_567

/**
 * 567. Permutation in String
 * https://leetcode.com/problems/permutation-in-string/description/
 *
 * Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1.
 * In other words, one of the first string's permutations is the substring of the second string.

Example 1:
Input: s1 = "ab" s2 = "eidbaooo"
Output: True
Explanation: s2 contains one permutation of s1 ("ba").
 * */
class Solution {
    /*
    * Solution: Sliding Window + Array;
    * Array save the frequency of each latter of s1, and keep tracking s2 to calculate the frequency of  each latter of s2;
    * Time complexity:O(l1+l2), Space complexity:O(1)
    * */
    fun checkInclusion(s1: String, s2: String): Boolean {
        val s1Array = IntArray(26)
        val s2Array = IntArray(26)
        for (c in s1) {
            s1Array[c - 'a']++
        }
        val s1Length = s1.length
        for (i in s2.indices) {
            //when i larger than s1Length, keep tracking to compare with remove the first latter
            if (i - s1Length >= 0) {
                s2Array[s2[i - s1Length] - 'a']--
            }
            s2Array[s2[i] - 'a']++
            if (s1Array contentEquals s2Array) {
                return true
            }
        }
        return false
    }
}
复制代码

 

posted @   johnny_zhao  阅读(96)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示