Advertisement
Guest User

MinWindowSubstring.js

a guest
Nov 12th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. var arr = ["abcdefbghijklabop", "bl"];
  2.  
  3. function getShortestSub(dic) {
  4. var shortestlen = Infinity;
  5. var substring = "";
  6. for( var key in dic ) {
  7. if (dic[key].length < shortestlen) {
  8. shortestlen = dic[key].length;
  9. substring = dic[key];
  10. }
  11. }
  12. return substring;
  13. }
  14.  
  15. function substringHelper(i, string, characters, strings) {
  16. if (i in strings) {
  17. return;
  18. }
  19. var tempDic = {};
  20. for (var key in characters) {
  21. tempDic[key] = characters[key];
  22. }
  23. var tempStr = "";
  24. var j = i;
  25. while (i < string.length) {
  26.  
  27. if (string[i] in tempDic) {
  28. tempDic[string[i]]--;
  29. tempStr += string[i];
  30. i++;
  31. substringHelper(i, string, characters, strings);
  32.  
  33. var isntDone = false;
  34. for (var key in tempDic) {
  35. if (tempDic[key] > 0) {
  36. isntDone = true;
  37. }
  38. }
  39. if (isntDone) {
  40. continue;
  41. }
  42. else {
  43. strings[j] = tempStr;
  44. return;
  45. }
  46. }
  47. else {
  48. tempStr += string[i];
  49. i++;
  50. }
  51. }
  52. }
  53.  
  54. function MinWindowSubstring(strArr) {
  55. var potStrings = {};
  56. var charCounts = {};
  57. var string = strArr[0];
  58. var chars = strArr[1];
  59. for (var i = 0; i < chars.length; i++) {
  60. if (chars[i] in charCounts) {
  61. charCounts[chars[i]]++;
  62. }
  63. else {
  64. charCounts[chars[i]] = 1;
  65. }
  66. }
  67. var j = 0;
  68. while (j < string.length) {
  69. if (!(string[j] in charCounts)) {
  70. j++;
  71. continue;
  72. }
  73. else {
  74. substringHelper(j, string, charCounts, potStrings);
  75. }
  76. j++;
  77. }
  78. return getShortestSub(potStrings);
  79. }
  80.  
  81. // keep this function call here
  82. console.log(MinWindowSubstring(arr));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement