Mở rộng String.prototype thêm removeStr(subStr, n): xóa lần xuất hiện thứ n của subStr trong chuỗi. Trả về chuỗi mới hoặc -1 nếu không tìm thấy.
Ví dụ
Chuỗi: 'jkdsttjkdsre'
SubStr: 'jk', n = 2
Lần 1: vị trí 0, Lần 2: vị trí 6 → xóa lần 2 → 'jkdsttdsre'
Giải pháp
Mã triển khai (sliding window):
const str = 'jkdsttjkdsre';
const subStr = 'jk';
const num = 2;
String.prototype.removeStr = function(subStr, num) {
if (!this.includes(subStr)) return -1;
let occurrences = 0;
const len = subStr.length;
for (let i = 0; i <= this.length - len; i++) {
if (this.substring(i, i + len) === subStr) {
occurrences++;
if (occurrences === num) {
return this.slice(0, i) + this.slice(i + len);
}
}
}
return -1; // Không đủ n lần
};
console.log(str.removeStr(subStr, num));
Kết quả
Đầu ra trong console:
jkdsttdsre
Lưu ý: Sửa lỗi logic loop vô tận trong code gốc. Cảnh báo: sửa đổi String.prototype không khuyến khích.