Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tổng ASCII nhỏ nhất của các ký tự bị xóa trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào hai chuỗi chữ cái tiếng Anh viết thường str1 và str2 làm đối số thứ nhất và thứ hai.

Hàm phải tìm và trả về tổng ASCII nhỏ nhất của các ký tự bị xóa để làm cho hai chuỗi bằng nhau.

Ví dụ, nếu đầu vào của hàm là:

Đầu vào

const str1 = 'sea'; const str2 = 'eat';

Đầu ra

const output = 231;

Giải thích đầu ra

Xóa "s" từ "sea" thêm giá trị ASCII của "s" (115) vào tổng.

Xóa "t" từ "eat" thêm 116 vào tổng.

Cuối cùng, cả hai chuỗi đều bằng nhau, và 115 + 116 = 231 là tổng nhỏ nhất có thể để đạt được điều này.

Ví dụ

Dưới đây là mã:

const str1 = 'sea'; const str2 = 'eat'; const minimumSum = (str1 = '', str2 = '') => { const chartCode = (s = '') => { let code = 0; for (const c of s) { code += c.charCodeAt(0); } return code; } let prev = new Array(str2.length + 1).fill(0); for (let ind1 = str1.length; ind1 >= 0; ind1--) { const current = new Array(str2.length + 1).fill(0); for (let ind2 = str2.length; ind2 >= 0; ind2--) { if (ind1 === str1.length) { current[ind2] = chartCode(str2.slice(ind2)); } else if (ind2 === str2.length) { current[ind2] = chartCode(str1.slice(ind1)); } else if (str1[ind1] === str2[ind2]) { current[ind2] = prev[ind2 + 1]; } else { current[ind2] = Math.min(prev[ind2] + (str1[ind1]).charCodeAt(0), current[ind2 + 1] + (str2[ind2]).charCodeAt(0)); } } prev = current; } return prev[0]; }; console.log(minimumSum(str1, str2));

Đầu ra

231