Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tạo từ dài nhất từ chuỗi cho trước trong JavaScript


Vấn đề

Cần viết hàm JS nhận chuỗi ký tự ngẫu nhiên str và mảng chuỗi arr. Thử xóa một số ký tự từ str để tạo từ dài nhất có trong arr. Trả về chuỗi dài nhất đó, hoặc chuỗi rỗng nếu không có.

Ví dụ:

const str = 'sdgfdfghdjh'; const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl'];

Kết quả:

const output = 'gfdfg';

Giải thích:

Dù 'sdf' và 'fghj' cũng tạo được nhưng 'gfdfg' dài nhất (5 ký tự).

Ví dụ

Mã thực hiện:

const str = 'sdgfdfghdjh'; const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl']; const findLongestWord = (str = '', arr = []) => {    arr.sort((a, b) => {       if (a.length !== b.length) {          return b.length - a.length;       };       return a.localeCompare(b);    });    for(const word of arr){       let index = -1;       for(const char of word){          index = str.indexOf(char, index + 1);          if(index < 0){             break;          };       };       if (index >= 0){          return word;       };    };    return ''; }; console.log(findLongestWord(str, arr));

Giải thích code:

Các bước:

  • Sắp xếp mảng arr theo độ dài giảm dần, sau đó theo thứ tự từ điển.

  • Duyệt từng từ, nếu mọi ký tự của từ không có trong str thì bỏ qua.

  • Nếu khớp hết, trả về từ đó (do đã sắp xếp, khớp đầu tiên là dài nhất).

Kết quả

Kết quả in ra console:

gfdfg