Skip to main content

MAY-18 2020 Challenge

MAY-18 2020 Challenge : Permutation in String



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").





Example 2:


Input:


s1= "ab"

s2 = "eidboaoo"



Output: False



Note:


- The input strings only contain lower case letters.

- The length of both given strings is

in range [1, 10,000].




Solution in C++: 

class Solution {

    public boolean checkInclusion(String s1, String s2) {

        int[] map = new int[128];

        for (char c : s1.toCharArray()) {

            map[c]++;

        }

        int count = s1.length();

        char[] chars = s2.toCharArray();

        int left = 0, right = 0;

        while (right < chars.length) {

            if (map[chars[right++]]-- > 0) count--;

            while (count == 0) {

                if (right - left == s1.length()) return true;

                if (++map[chars[left++]] > 0) count++;

            }

        }

        return false;

    }

}

Permutation in String

Comments

Popular posts from this blog

Leetcode 322. Coin Change. Python (Greedy? vs DP?)

322 .  Coin Change You are given an integer array  coins  representing coins of different denominations and an integer  amount  representing a total amount of money. Return  the fewest number of coins that you need to make up that amount . If that amount of money cannot be made up by any combination of the coins, return  -1 . You may assume that you have an infinite number of each kind of coin.   Example 1: Input: coins = [1,2,5], amount = 11 Output: 3 Explanation: 11 = 5 + 5 + 1 Example 2: Input: coins = [2], amount = 3 Output: -1 Example 3: Input: coins = [1], amount = 0 Output: 0   Constraints: 1 <= coins.length <= 12 1 <= coins[i] <= 2 31  - 1 0 <= amount <= 10 4   Solution : class Solution:     def coinChange(self, coins: List[int], amount: int) -> int:         dp = [amount + 1] * (amount + 1) #[0...7]         dp[0] = 0        ...

Leetcode 424. Longest Repeating Character Replacement. Python (Sliding Window)

  424 .  Longest Repeating Character Replacement You are given a string  s  and an integer  k . You can choose any character of the string and change it to any other uppercase English character. You can perform this operation at most  k  times. Return  the length of the longest substring containing the same letter you can get after performing the above operations .   Example 1: Input: s = "ABAB", k = 2 Output: 4 Explanation: Replace the two 'A's with two 'B's or vice versa. Example 2: Input: s = "AABABBA", k = 1 Output: 4 Explanation: Replace the one 'A' in the middle with 'B' and form "AABBBBA". The substring "BBBB" has the longest repeating letters, which is 4.   Constraints: 1 <= s.length <= 10 5 s  consists of only uppercase English letters. 0 <= k <= s.length Solution :  class Solution: def characterReplacement(self, s: str, k: int) -> int: hm = {} ans = 0 ...

Leetcode 217. Contains Duplicate. Python (Easiest Approach ✅)

217 .  Contains Duplicate   Given an integer array  nums , return  true  if any value appears  at least twice  in the array, and return  false  if every element is distinct.   Example 1: Input: nums = [1,2,3,1] Output: true Example 2: Input: nums = [1,2,3,4] Output: false Example 3: Input: nums = [1,1,1,3,3,4,3,2,4,2] Output: true   Constraints: 1 <= nums.length <= 10 5 -10 9  <= nums[i] <= 10 9 class Solution: def containsDuplicate(self, nums: List[int]) -> bool: hs = set() for n in nums: if n in hs: return True hs.add(n) return False Explaination :