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

การนับจำนวนพาลินโดรมที่สร้างได้จากสตริงใน JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงตัวอักษรเป็นอาร์กิวเมนต์แรก (str) และตัวเลขเป็นอาร์กิวเมนต์ที่สอง (num) ฟังก์ชันต้องนับจำนวนสตริงพาลินโดรมที่มีความยาวเท่ากับ num ที่สร้างได้จาก str แล้วคืนค่าจำนวนนั้น

ตัวอย่าง

ถ้าสตริงและตัวเลขนำเข้าคือ:

const str = 'ij';
const num = 4;

ผลลัพธ์ควรเป็น:

const output = 4;

เพราะพาลินโดรมที่เป็นไปได้ 4 แบบคือ:

'iiii', 'jjjj', 'ijji', 'jiij'

แนวทาง

เราจะนับตัวอักษรที่ไม่ซ้ำกันในสตริงโดยใช้แฮชเซต ถ้าความยาวพาลินโดรมเป็นเลขคี่ ตัวอักษรกึ่งกลางจะมีตัวเลือก u แบบ โดย u คือจำนวนตัวอักษรไม่ซ้ำ

เมื่อ num เป็นเลขคู่ จำนวนความเป็นไปได้คือ power(u, num/2)

เมื่อ num เป็นเลขคี่ ต้องคูณด้วย u อีกครั้ง เพราะมี u ตัวเลือกสำหรับตำแหน่งกึ่งกลาง

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

const str = 'ij';
const num = 4;
const findValidPalindromes = (str = '', num = 1) => {
  const set = new Set();
  for(let i = 0; i < str.length; i++) {
    const el = str[i];
    set.add(el);
  }
  const u = set.size;
  if(num & 1) {
    return Math.pow(u, num/2) * u;
  } else {
    return Math.pow(u, num/2);
  }
};
console.log(findValidPalindromes(str, num));

ผลลัพธ์

4