Computer >> Máy Tính >  >> Lập trình >> Javascript

Chuỗi cửa sổ tối thiểu trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript có hai chuỗi, chúng ta hãy gọi chúng là str1 và str2.

Kích thước của str1 được đảm bảo lớn hơn kích thước của str2. Chúng tôi được yêu cầu tìm chuỗi con nhỏ nhất trong str1 chứa tất cả các ký tự có trong str2.

Ví dụ -

Nếu các chuỗi đầu vào là -

const str1 = 'abcdefgh';
const str2 = 'gedcf';

Sau đó, đầu ra phải là -

const output = 'cdefg';

bởi vì đây là chuỗi con liên tiếp nhỏ nhất của str1 chứa tất cả các ký tự của str2.

Ví dụ

Sau đây là mã -

const str1 = 'abcdefgh';
const str2 = 'gedcf';
const subIncludesAll = (str, str2) => {
   for (let i = 0; i < str.length; i++) {
      if (str2.indexOf(str[i]) !== -1) {
         str2 = str2.replace(str[i], '');
      };
   };
   return (str2.length === 0);
};
const minWindow = (str1 = '', str2 = '') => {
   let shortestString = null;
   for (let i = 0; i < str1.length; i++) {
      for (let j = i; j < str1.length; j++) {
         let testString = str1.substr(i, j-i+1);
         if (subIncludesAll(testString, str2)) {
            if (shortestString === null || testString.length < shortestString.length) {
               shortestString = testString;
            }
         }
      }
   }
   return shortestString;
};
console.log(minWindow(str1, str2));

Đầu ra

Sau đây là kết quả trên bảng điều khiển -

cdefg