Advertisement
unknown_0711

Untitled

Nov 16th, 2022
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Main {
  4.  
  5. static boolean isGood(int[] frePtr, int[] freRunning) {
  6. for(int i = 0; i < 26; i++) {
  7. if(freRunning[i] < frePtr[i])
  8. return false;
  9. }
  10. return true;
  11. }
  12.  
  13. public static void main (String[] args) throws java.lang.Exception {
  14. Scanner scanner = new Scanner(System.in);
  15. String str = scanner.next();
  16. String ptr = scanner.next();
  17. int[] frePtr = new int[26];
  18. int[] freRunning = new int[26]; // sliding window frequency
  19. for(int i = 0; i < ptr.length(); i++) {
  20. frePtr[ptr.charAt(i) - 'a']++;
  21. }
  22. int n = str.length();
  23. int start = -1, len = Integer.MAX_VALUE;
  24. for(int left = 0, right = 0; right < n; right++) {
  25. freRunning[str.charAt(right) - 'a']++;
  26. while (isGood(frePtr, freRunning)) {
  27. int currLength = right - left + 1;
  28. if(currLength < len) {
  29. len = currLength;
  30. start = left;
  31. }
  32. freRunning[str.charAt(left) - 'a']--;
  33. left++;
  34. }
  35. }
  36. if(start == -1) {
  37. System.out.println(-1);
  38. } else {
  39. System.out.println(str.substring(start, start + len));
  40. }
  41.  
  42. }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement