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

Khoảng cách ngắn nhất đến ký tự chỉ định trong chuỗi JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi chữ cái tiếng Anh viết thường str làm đối số thứ nhất và một ký tự đơn char tồn tại trong chuỗi str làm đối số thứ hai. Hàm phải chuẩn bị và trả về một mảng, trong đó với mỗi ký tự trong chuỗi str, chứa khoảng cách từ ký tự đó đến ký tự gần nhất được chỉ định bởi char.

Ví dụ, nếu đầu vào 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ụ

Dưới đây là mã thực hiện:

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));

Kết quả

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