【毎日leetcode】ローマ数字回転整数
4249 ワード
ローマ数字には、I、V、X、L、C、D、Mの7文字が含まれています.文字値I 1 V 5 X 10 L 50 C 100 D 500 M 1000は、例えば、ローマ数字2をIIと書くと、2つの並列の1となる.12はXIIと書きます.つまりX+IIです.27 XXVIIと書くと、XX+V+IIとなります.通常、ローマ数字の中で小さい数字は大きな数字の右側にあります.しかし、例えば4はIIIではなくIVと書くという特例もある.数字1は数字5の左側にあり、表す数は大数5から小数1を減らした数値4に等しい.同様に、数字9はIXとして表される.この特殊な規則は以下の6つの場合にのみ適用される:IはV(5)とX(10)の左側に置いて4と9を表すことができる.XはL(50)とC(100)の左側に置いて40と90を表すことができる.CはD(500)とM(1000)の左側に置いて400と900を表すことができる.ローマ数字を指定し、整数に変換します.入力は1~3999の範囲であることを確認します.例1:入力:「III」出力:3例2:入力:「IV」出力:4例3:入力:「IX」出力:9例4:入力:「LVIII」出力:58解釈:L=50、V=5、III=3.例5:入力:「MCMXCIV」出力:1994解釈:M=1000、CM=900、XC=90、IV=4.
言語:c++
言語:c++
class Solution {
public:
int romanToInt(string s) {
int n=0;
for(int i=s.length()-1;i>=0;i--)
{
if(s[i]=='I')
n=n+1;
if(s[i]=='V')
{
if(s[i-1]=='I')
n=n+5-2;
else
n=n+5;
}
if(s[i]=='X')
{
if(s[i-1]=='I')
n=n+10-2;
else
n=n+10;
}
if(s[i]=='L')
{
if(s[i-1]=='X')
n=n+50-20;
else
n=n+50;
}
if(s[i]=='C')
{
if(s[i-1]=='X')
n=n+100-20;
else
n=n+100;
}
if(s[i]=='D')
{
if(s[i-1]=='C')
n=n+500-200;
else
n=n+500;
}
if(s[i]=='M')
{
if(s[i-1]=='C')
n=n+1000-200;
else
n=n+1000;
}
}
return n;
}
};