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

Khoảng cách ngắn nhất tương ứng trong chuỗi trong JavaScript

Sự cố

Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một chuỗi các bảng chữ cái viết thường tiếng Anh, str, làm đối số đầu tiên và một ký tự duy nhất, char, tồn tại trong chuỗi str, làm đối số thứ hai.

Hàm của chúng ta phải chuẩn bị và trả về một mảng, đối với mỗi ký tự trong chuỗi str, chứa khoảng cách của nó với ký tự gần nhất trong chuỗi được chỉ định bởi char.

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

Đầu vào

const str = 'somestring';
const char = 's';

Đầu ra

const output = [0, 1, 2, 1, 0, 1, 2, 3, 4, 5]

Ví dụ

Sau đây là mã -

const str = 'somestring';
const char = 's';
const shortestDistance = (str = '', char = '') => {
   const res = new Array(str.length).fill(Infinity)
   let prev = Infinity
   const handleIndex = (i) => {
      if (str[i] === char) {
         prev = i
      }
      res[i] = Math.min(res[i], Math.abs(i - prev), )
   }
   for (let i = 0; i < str.length; i++) {
      handleIndex(i)
   }
   prev = Infinity
   for (let i = str.length - 1; i >= 0; i--) {
      handleIndex(i)
   }
   return res
}
console.log(shortestDistance(str, char));

Đầu ra

[ 0, 1, 2, 1, 0, 1, 2, 3, 4, 5 ]