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