leetcode Roman to Integer 로마 숫자 와 아랍 숫자 가 서로 바뀐다.
1. 로마 숫자 로 아라비아 숫자 돌리 기:
현재 처 리 된 문자 에 대응 하 는 값 이 이전 문자 와 같다 면 임시 변수 에 이 문 자 를 추가 합 니 다.예 를 들 면 III = 3
현재 가 이전 보다 크다 면 이 단락 의 값 은 현재 이 값 에서 앞 에 기 록 된 임시 변수 중의 값 을 빼 야 한 다 는 것 을 설명 합 니 다.예 를 들 어 IV = 5 – 2
현재 이전 보다 작 으 면 임시 변수의 값 을 결과 에 추가 한 다음 다음 기록 을 시작 할 수 있 습 니 다.예 를 들 면 VI = 5 + 1
int getnum(char c){
switch (c){
case 'I':return 1;
case 'V':return 5;
case 'X':return 10;
case 'L':return 50;
case 'C':return 100;
case 'D':return 500;
case 'M':return 1000;
default:return 0;}
}
int romanToInt(char* s) {
int l=strlen(s);
if(l==0)return 0;
int sum=getnum(s[l-1]);
for(int i=l-1;i>=0;i--){
if(getnum(s[i-1])>=getnum(s[i])){sum+=getnum(s[i-1]);}
else sum-=getnum(s[i-1]);
}
return sum;
}
2. 아라비아 숫자 로마 숫자 돌리 기
관건 은 1 - 3999 사이 의 로마 숫자 를 찾 는 기본 기호 이다. 예 를 들 어 1 - 20 이내 에 I, II, III, IV, V, VI, VII, IX, X, XI, XII, XIII, XIV, XV, XVII, XVIII, XVIII, XIX, XX, 기본 기 호 는 I, V, X 이 고 다른 숫자 는 모두 이 를 바탕 으로 하 는 조합 이다. 자 료 를 조회 하여 1 - 3999 사이 의 기본 기 호 를 찾 아 보 자.
"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"
대응:
1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1
다음은 간단 하 다. 아라비아 숫자 와 각 기본 기호 숫자의 크기 를 직접 판단 하면 된다.
char* intToRoman(int num) {
int values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
char chara[13][3]={"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
char *p=(char*)malloc(sizeof(char)*15);
memset(p,0,sizeof(p));
int i;
int j=0;
for(i=0;i<13;i++){
while(num>=values[i])
{for(int k=0;chara[i][k]!='\0';k++)p[j++]=chara[i][k];
num-=values[i];
}
}
p[j]='\0';
return p;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.