unknown_0711

Untitled

Dec 13th, 2022
30
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.  
  20. for(int i = 0; i < ptr.length(); i++) {
  21. frePtr[ptr.charAt(i) - 'a']++;
  22. }
  23. int n = str.length();
  24. int start = -1, len = Integer.MAX_VALUE;
  25.  
  26. for(int left = 0, right = 0; right < n; right++) {
  27. freRunning[str.charAt(right) - 'a']++;
  28. while (isGood(frePtr, freRunning)) {
  29. int currLength = right - left + 1;
  30. if(currLength < len) {
  31. len = currLength;
  32. start = left;
  33. }
  34. freRunning[str.charAt(left) - 'a']--;
  35. left++;
  36. }
  37. }
  38.  
  39. if(start == -1) {
  40. System.out.println(-1);
  41. } else {
  42. System.out.println(str.substring(start, start + len));
  43. }
  44.  
  45. }
  46. }
Add Comment
Please, Sign In to add comment