เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงเป็นอาร์กิวเมนต์แรก และตัวเลข (น้อยกว่าความยาวสตริง) เป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันต้องลบตัวอักษรจากสตริงต้นฉบับและเตรียมสตริงใหม่ที่เป็นสตริงยาวที่สุดที่มีตัวอักษรที่แตกต่างกันไม่เกินสองตัว แล้วคืนค่าความยาวของสตริงนั้น
ตัวอย่าง
ถ้าสตริงนำเข้าคือ:
const str = 'kjeljsdl';
ผลลัพธ์ควรเป็น:
const output = 4;
เพราะสับสตริงยาวที่สุดที่มีตัวอักษรไม่เกิน 2 ตัวคือ 'jljl'
ตัวอย่างโค้ด
const str = 'kjeljsdl';
const longestSubstring = (str = '') => {
const { length } = str;
if (length <= 1) {
return 0;
}
const keys = [...new Set(str)];
const arr = [];
let max = 0;
for (let i = 0; i < keys.length - 1; i++) {
for (let j = i + 1; j < keys.length; j++) {
arr.push(keys[i] + keys[j]);
}
}
arr.forEach(item => {
let sub = '';
for (let i = 0; i < str.length; i++) {
if (sub[sub.length - 1] === str[i]) {
sub = '';
break;
}
if (item.includes(str[i])) {
sub += str[i];
}
}
if (sub && sub.length > max) {
max = sub.length;
}
});
return max;
};
console.log(longestSubstring(str));
ผลลัพธ์
4