Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 문자의 최소 삭제 합계

<시간/>

문제

영문 소문자 str1과 str2의 두 문자열을 각각 첫 번째와 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

우리 함수는 삭제된 문자의 가장 낮은 ASCII 합계를 찾아 반환하여 두 문자열을 동일하게 만듭니다.

예를 들어 함수에 대한 입력이

인 경우

입력

const str1 ='바다';const str2 ='먹다';

출력

상수 출력 =231;

출력 설명

"sea"에서 "s"를 삭제하면 합계에 "s"(115)의 ASCII 값이 추가됩니다.

"eat"에서 "t"를 삭제하면 합계에 116이 추가됩니다.

결국 두 문자열은 동일하며 115 + 116 =231이 이를 달성할 수 있는 최소 합계입니다.

예시

다음은 코드입니다 -

const str1 ='바다'; const str2 ='eat'; const minimumSum =(str1 ='', str2 ='') => { const chartCode =(s ='') => { 코드 =0 for (const c of s) { code +=c.charCodeAt(0) } 반환 코드 } 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) { 현재[ind2] =chartCode(str2.slice(ind2)) } else if (ind2 ===str2.length) { 현재[ind2] =chartCode(str1.slice(ind1)) } else if (str1 [ind1] ===str2[ind2]) { 현재[ind2] =이전[ind2 + 1] } else { 현재[ind2] =Math.min( 이전[ind2] + (str1[ind1]).charCodeAt(0 ), 현재[ind2 + 1] + (str2[ind2]).charCodeAt(0), ) } } 이전 =현재 } 이전 버전[0]}console.log(minimumSum(str1, str2)) 반환; 

출력

231