Monday, March 2, 2020

567. Permutation in String

Given two strings s1 and s2, write a function to return true if s2contains 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:
  1. The input strings only contain lower case letters.
  2. The length of both given strings is in range [1, 10,000].

class Solution { public: bool checkInclusion(string s1, string s2) { map<char, int> mp1; map<char, int> mp2; for (auto ch : s1) { mp1[ch]++; } int start = 0, end = 0; while (end < s2.size()) { mp2[s2[end]]++; while(end - start > s1.size() - 1) { if (--mp2[s2[start++]] == 0) { mp2.erase(s2[start - 1]); } } if (mp2 == mp1) { return true; } end++; } return false; } };

No comments:

Post a Comment