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

Tạo từ dài nhất trong JavaScript

Vấn đề

Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một chuỗi chữ cái tiếng Anh ngẫu nhiên, str, làm đối số đầu tiên và một mảng chuỗi, arr, làm đối số thứ hai.

Nhiệm vụ của hàm của chúng ta là thử xóa một số ký tự khỏi chuỗi str và kiểm tra xem từ dài nhất nào có thể được hình thành cũng tồn tại trong mảng arr. Hàm của chúng ta sẽ trả về chuỗi dài nhất có thể.

Nếu không tồn tại chuỗi nào như vậy, chúng ta nên trả về một chuỗi trống.

Ví dụ:nếu đầu vào của hàm là -

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

Sau đó, kết quả đầu ra phải là -

const output = 'gfdfg';

Giải thích đầu ra:

Mặc dù phần tử đầu tiên và thứ hai của mảng có thể được tạo bằng cách xóa các ký tự khỏi chuỗi nhưng ‘gfdfg’ là chuỗi dài nhất (5) mà chúng ta có thể tạo từ chuỗi str.

Ví dụ

Mã cho điều này sẽ là -

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 mã:

Các bước chúng tôi đã trải qua -

  • Sắp xếp mảng arr theo độ dài trước rồi đến thứ tự từ vựng.

  • Lặp lại từng từ trong arr, nếu mọi ký tự của từ không có trong chuỗi str thì chúng ta chỉ cần trả về.

  • Và nếu mọi từ đều khớp, thì chúng tôi sẽ trả về từ đó.

Và vì chúng tôi đã sắp xếp từ điển của mình, chúng tôi có thể đảm bảo rằng kết quả phù hợp đầu tiên là câu trả lời của chúng tôi.

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

gfdfg