Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ระยะทางที่สั้นที่สุดในสตริงที่สอดคล้องกันใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงของตัวอักษรพิมพ์เล็กภาษาอังกฤษ str เป็นอาร์กิวเมนต์แรกและอักขระตัวเดียว char ซึ่งมีอยู่ในสตริง str เป็นอาร์กิวเมนต์ที่สอง

ฟังก์ชันของเราควรเตรียมและส่งกลับอาร์เรย์ซึ่งสำหรับอักขระแต่ละตัวในสตริง 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 ]