Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Main {
- static boolean isGood(int[] frePtr, int[] freRunning) {
- for(int i = 0; i < 26; i++) {
- if(freRunning[i] < frePtr[i])
- return false;
- }
- return true;
- }
- public static void main (String[] args) throws java.lang.Exception {
- Scanner scanner = new Scanner(System.in);
- String str = scanner.next();
- String ptr = scanner.next();
- int[] frePtr = new int[26];
- int[] freRunning = new int[26]; // sliding window frequency
- for(int i = 0; i < ptr.length(); i++) {
- frePtr[ptr.charAt(i) - 'a']++;
- }
- int n = str.length();
- int start = -1, len = Integer.MAX_VALUE;
- for(int left = 0, right = 0; right < n; right++) {
- freRunning[str.charAt(right) - 'a']++;
- while (isGood(frePtr, freRunning)) {
- int currLength = right - left + 1;
- if(currLength < len) {
- len = currLength;
- start = left;
- }
- freRunning[str.charAt(left) - 'a']--;
- left++;
- }
- }
- if(start == -1) {
- System.out.println(-1);
- } else {
- System.out.println(str.substring(start, start + len));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement