ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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 ]