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

จำนวนการลบขั้นต่ำของอักขระใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้ตัวอักษรพิมพ์เล็กภาษาอังกฤษสองสตริง str1 และ str2 เป็นอาร์กิวเมนต์แรกและตัวที่สองตามลำดับ

ฟังก์ชันของเราควรจะค้นหาและส่งกลับผลรวมของอักขระที่ถูกลบ ASCII ต่ำสุดเพื่อให้สองสตริงเท่ากัน

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ

ป้อนข้อมูล

const str1 ='ทะเล';const str2 ='กิน';

ผลผลิต

คอนสตเอาท์ =231;

คำอธิบายผลลัพธ์

การลบ "s" จาก "sea" จะเพิ่มค่า ASCII ของ "s" (115) ให้กับผลรวม

การลบ "t" จาก "eat" จะเพิ่ม 116 ให้กับผลรวม

ในตอนท้าย สตริงทั้งสองมีค่าเท่ากัน และ 115 + 116 =231 คือผลรวมขั้นต่ำที่สามารถทำได้

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const str1 ='sea';const str2 ='eat';const maximumSum =(str1 ='', str2 ='') => { const chartCode =(s ='') => { ให้โค้ด =0 for (const c of s) { code +=c.charCodeAt(0) } return code } let prev =new Array(str2.length + 1).fill(0) สำหรับ (ให้ ind1 =str1.length; ind1>=0; ind1--) { const current =new Array (str2.length + 1).fill (0) สำหรับ (ให้ ind2 =str2.length; ind2>=0; ind2--) { if (ind1 ===str1 .length) { ปัจจุบัน [ind2] =chartCode (str2.slice (ind2)) } อื่น ๆ ถ้า (ind2 ===str2.length) { ปัจจุบัน [ind2] =chartCode (str1.slice (ind1)) } อื่น ๆ ถ้า (str1 [ind1] ===str2[ind2]) { ปัจจุบัน [ind2] =ก่อนหน้า [ind2 + 1] } อื่น ๆ { ปัจจุบัน [ind2] =Math.min (ก่อนหน้า [ind2] + (str1 [ind1]).charCodeAt (0 ), current[ind2 + 1] + (str2[ind2]).charCodeAt(0), ) } } prev =current } return prev[0]}console.log(minimumSum(str1, str2)); 

ผลลัพธ์

231