ฟังก์ชันนี้แมปตัวอักษรในสตริงเป็นตัวเลขลำดับ: ตัวอักษรใหม่ (unique) ได้หมายเลขใหม่ (+1) ตัวซ้ำได้หมายเลขเดิม
ตัวอย่าง
// Input: 'heeeyyyy' // h(ใหม่→0), e(ใหม่→1), e(ซ้ำ→1), e(ซ้ำ→1), y(ใหม่→2), y(ซ้ำ→2), y(ซ้ำ→2), y(ซ้ำ→2) // Output: [0, 1, 1, 1, 2, 2, 2, 2]
ตัวอย่างโค้ด
const str = 'heeeyyyy';
const mapString = str => {
const res = [];
let curr = '', count = -1;
for (let i = 0; i < str.length; i++) {
if (str[i] === curr) {
res.push(count);
} else {
count++;
res.push(count);
curr = str[i];
}
}
return res;
};
console.log(mapString(str));
การทำงาน
currเก็บตัวอักษรก่อนหน้าcountนับจำนวนกลุ่มตัวอักษรที่เปลี่ยนไป- ต่อเนื่องกัน = กลุ่มเดียวกัน = หมายเลขเดียวกัน
ผลลัพธ์
[ 0, 1, 1, 1, 2, 2, 2, 2 ]
ประยุกต์ใช้: Run-length encoding การบีบอัดข้อมูล การวิเคราะห์รูปแบบสตริง