เพิ่มเมธอด 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