로마에서 정수로

1876 단어
이것은 Integer to Roman과 유사하지만 몇 가지 차이점이 있습니다.

나중에 참조할 수 있어야 하므로 값의 맵을 만드는 것으로 시작하겠습니다. 이 맵을 편리하게 사용할 수 있으면 문자열의 모든 lett을 볼 때 참조할 수 있습니다. 다음은 염두에 두어야 할 몇 가지 문자열 예입니다. XIX, XI는 19와 11입니다.

function romanToInteger(string) {
 let map = {
     I: 1,
     V: 5,
     X: 10,
     L: 50,
     C: 100,
     D: 500,
     X: 1000,
 }


다음으로 문자열을 반복하고 각 문자를 현재 또는 다음으로 지정합니다.

XI 또는 11에서 전류는 X이고 다음은 I입니다.

현재 문자가 다음 문자보다 크면 정상적으로 결과에 추가할 수 있습니다.

XI의 경우 10을 더한 다음 1을 더하면 11이 됩니다.

20, XIX의 경우와 같이 현재 문자가 다음 문자보다 작으면 현재 요소에서 다음 요소를 뺍니다.

자, 상상해보세요. XIX를 보면 전류가 X이고 다음이 I입니다. X가 I보다 크므로 X를 더합니다. 그런 다음 I와 X를 보면 전류가 다음보다 크지 않으므로 다음 값에서 다음을 뺀 값을 더합니다. 현재 또는 10 - 1.

19까지 나옵니다.

function romanToInteger(string) {
 let map = {
     I: 1,
     V: 5,
     X: 10,
     L: 50,
     C: 100,
     D: 500,
     X: 1000,
 }
  let result = 0
  for (let i = 0; i < string.length; i++) {
   let current = map[string.charAt(i)]
   let next = map[string.charAt(i+1)]
    if (current > next) {
   result += current
  } else {
   result += next - current
   }
  }
}


이것은 우리가 문자열의 끝에 있고 더 이상 검토할 다음 요소가 없는 마지막 경우를 제외한 대부분의 경우를 처리해야 합니다.

이 경우 모든 if 문을 새 if 문으로 래핑합니다. 즉, 다음 문이 있는 한 이 if 문을 실행합니다.

function romanToInteger(string) {
 let map = {
     I: 1,
     V: 5,
     X: 10,
     L: 50,
     C: 100,
     D: 500,
     X: 1000,
 }
  let result = 0
  for (let i = 0; i < string.length; i++) {
   let current = map[string.charAt(i)]
   let next = map[string.charAt(i+1)]

    if (next) {
    if (current > next) {
   result += current
  } else {
   result += next - current
   }
  }
 } else {
  result += current
 }
return result
}


그리고 거기에 여러분이 있습니다.

좋은 웹페이지 즐겨찾기