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

การเขียน String Prototype Function แทนที่การปรากฏครั้งที่ k - JavaScript

เพิ่มเมธอด removeStr(subStr, n) ให้ String.prototype: ลบ substring subStr ครั้งที่ n ที่ปรากฏ

ตัวอย่าง

str = 'jkdsttjkdsre', subStr = 'jk', n = 2
Output: 'jkdsttdsre' (ลบ 'jk' ครั้งที่ 2)

ตัวอย่างโค้ด

const str = 'jkdsttjkdsre';
const subStr = 'jk';
const num = 2;

String.prototype.removeStr = function(subStr, num) {
  if (!this.includes(subStr)) return -1;

  let start = 0, end = subStr.length;
  let occurrences = 0;

  for (; end <= this.length; ) {
    if (this.substring(start, end) === subStr) {
      occurrences++;
    }
    if (occurrences === num) {
      return this.substring(0, start) + this.substring(end);
    }
    end++;
    start++;
  }
  return -1; // ไม่พบครั้งที่ n
};

console.log(str.removeStr(subStr, num));

อัลกอริทึม: Sliding Window

  • หน้าต่างขนาด subStr.length เลื่อนจากซ้ายไปขวา
  • นับครั้งที่เจอ subStr
  • เจอครั้งที่ num → ตัดทิ้งด้วย substring

ข้อควรระวัง

  • การแก้ไข String.prototype เป็น anti-pattern
  • โค้ดต้นฉบับมี syntax error: for(; ;end < this.length) ควรเป็น for(; end <= this.length; )
  • คืน -1 ถ้าไม่เจอครั้งที่ n

ผลลัพธ์

jkdsttdsre