Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การแมปตัวอักษรในสตริงเป็นอาร์เรย์หมายเลขลำดับ - JavaScript

ฟังก์ชันนี้แมปตัวอักษรในสตริงเป็นตัวเลขลำดับ: ตัวอักษรใหม่ (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 การบีบอัดข้อมูล การวิเคราะห์รูปแบบสตริง