Last updated on July 19th, 2024 at 10:22 pm
Here, We see Permutation in String LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
Topics
Sliding Window, Two Pointers
Companies
Microsoft
Level of Question
Medium
![Permutation in String LeetCode Solution](https://i0.wp.com/totheinnovation.com/wp-content/uploads/2024/02/LeetCode-Problem-Solution.png?resize=200%2C200&ssl=1)
Permutation in String LeetCode Solution
Table of Contents
Problem Statement
Given two strings s1 and s2, return true if s2 contains a permutation of s1, or false otherwise.
In other words, return true if one of s1’s permutations is the substring of s2.
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
1. Permutation in String Leetcode Solution C++
class Solution { public: bool checkInclusion(string s1, string s2) { vector<int> cur(26), goal(26); for(char c : s1) goal[c - 'a']++; for(int i = 0; i < s2.size(); i++) { cur[s2[i] - 'a']++; if(i >= s1.size()) cur[s2[i - s1.size()] - 'a']--; if(goal == cur) return true; } return false; } };
2. Permutation in String Leetcode Solution Java
class Solution { public boolean checkInclusion(String s1, String s2) { if(s1.length() > s2.length()) return false; int[] arr1 = new int[26]; int[] arr2 = new int[26]; for(int i = 0; i < s1.length(); i++){ arr1[s1.charAt(i) - 'a']++; arr2[s2.charAt(i) - 'a']++; } if(Arrays.equals(arr1, arr2)) return true; int front = 0; int back = s1.length(); while(back < s2.length()){ arr2[s2.charAt(front) - 'a']--; arr2[s2.charAt(back) - 'a']++; if(Arrays.equals(arr1, arr2)) return true; front++; back++; } return false; } }
3. Permutation in String Solution JavaScript
var checkInclusion = function (s1, s2) { const len1 = s1.length, len2 = s2.length; if (len1 > len2) return false; const count = Array(26).fill(0); for (let i = 0; i < len1; i++) { count[s1.charCodeAt(i)-97]++; count[s2.charCodeAt(i)-97]--; } if (!count.some(e => e !== 0)) return true; for (let i = len1; i < len2; i++) { count[s2.charCodeAt(i)-97]--; count[s2.charCodeAt(i-len1)-97]++; if (!count.some(e => e !== 0)) return true; } return false; };
4. Permutation in String Solution Python
class Solution(object): def checkInclusion(self, s1, s2): window = len(s1) s1_c = Counter(s1) for i in range(len(s2)-window+1): s2_c = Counter(s2[i:i+window]) if s2_c == s1_c: return True return False