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

Đếm các chuỗi con phù hợp trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi, str, làm đối số đầu tiên và một mảng chuỗi, arr, làm đối số thứ hai. Hàm của chúng ta sẽ đếm và trả về số arr [i] là dãy con của chuỗi str.

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

Đầu vào

const str = 'klmnop';
const arr = ['k', 'll', 'klp', 'klo'];

Đầu ra

const output = 3;

Giải thích đầu ra

Vì các chuỗi bắt buộc là ‘k’, ‘klp’ và ‘klo’

Ví dụ

Sau đây là mã -

const str = 'klmnop';
const arr = ['k', 'll', 'klp', 'klo'];
const countSubstrings = (str = '', arr = []) => {
   const map = arr.reduce((acc, val, ind) => {
      const c = val[0]
      acc[c] = acc[c] || []
      acc[c].push([ind, 0])
      return acc
   }, {})
   let num = 0
   for (let i = 0; i < str.length; i++) {
      if (map[str[i]] !== undefined) {
         const list = map[str[i]]
         map[str[i]] = undefined
         list.forEach(([wordIndex, charIndex]) => {
            if (charIndex === arr[wordIndex].length - 1) {
               num += 1
            } else {
               const nextChar = arr[wordIndex][charIndex + 1]
               map[nextChar] = map[nextChar] || []
               map[nextChar].push([wordIndex, charIndex + 1])
            }  
         })
      }
   }
   return num
}
console.log(countSubstrings(str, arr));

Đầu ra

3