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

สตริงยาวที่สุดที่มีตัวอักษรไม่เกินสองตัวใน JavaScript

เราต้องเขียนฟังก์ชัน 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