Problem
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
Example 1:
Input:s1 = "ab" s2 = "eidbaooo"
Output:TrueExplanation: s2 contains one permutation of s1 ("ba").Example 2:Input:s1= "ab" s2 = "eidboaoo"
Output: FalseSolution
public class Solution { /** * @param s1: a string * @param s2: a string * @return: if s2 contains the permutation of s1 */ public boolean checkInclusion(String s1, String s2) { int len = s1.length(); for (int i = 0; i <= s2.length()-len; i++) { if (isPermutation(s2.substring(i, i+len), s1)) return true; } return false; } //use the method of #String Permutation public boolean isPermutation(String s1, String s2) { if (s1 == null) return s2 == null; if (s2 == null) return s1 == null; if (s1.length() != s2.length()) return false; int[] dict = new int[256]; char[] c1 = s1.toCharArray(); char[] c2 = s2.toCharArray(); for (char ch: c1) { dict[(int)ch]++; } for (char ch: c2) { dict[(int)ch]--; if (dict[(int)ch] < 0) return false; } return true; }}