Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

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


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

ฟังก์ชันควรนับจำนวนสตริงพาลินโดรมทุกความยาวทั้งหมด num สามารถสร้างได้จากสตริง str ที่ให้มา ในที่สุดฟังก์ชันก็ควรคืนค่าการนับ

ตัวอย่างเช่น −

หากสตริงอินพุตและตัวเลขเป็น −

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

จากนั้นผลลัพธ์ควรเป็น −

const output = 4;

เพราะสี่สตริงพาลินโดรมที่เป็นไปได้คือ −

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

แนวทาง:

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

เมื่อ num เป็นคู่ เราจะมีความเป็นไปได้ดังต่อไปนี้ -

power(u, num/2)

และเมื่อ num เป็นคี่ เราต้องคูณตัวเลขนี้ด้วย 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