Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 문자열의 해당 최단 거리

<시간/>

문제

영문 소문자 문자열 str을 첫 번째 인수로, 문자열 str에 존재하는 단일 문자 char를 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

우리 함수는 문자열 str의 각 문자에 대해 char로 지정된 문자열의 가장 가까운 문자로부터의 거리를 포함하는 배열을 준비하고 반환해야 합니다.

예를 들어, 함수에 대한 입력이

인 경우

입력

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

출력

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

예시

다음은 코드입니다 -

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

출력

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