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 ]