Skip to content

Instantly share code, notes, and snippets.

@AbhiAgarwal192
Created August 21, 2020 04:59
Show Gist options
  • Save AbhiAgarwal192/cdde3fd3e6bd92396778413437b612c7 to your computer and use it in GitHub Desktop.
Save AbhiAgarwal192/cdde3fd3e6bd92396778413437b612c7 to your computer and use it in GitHub Desktop.
Given a roman numeral, convert it to an integer.
public class Solution {
public int RomanToInt(string s) {
int len = s.Length;
int num = 0;
int i=0;
while(i<len){
if(i-1>=0 && s[i] == 'V' && s[i-1] == 'I'){
num = num + 4;
}
else if(s[i] == 'V'){
int j = i;
int five = 0;
while(j<len && s[j] == 'V'){
five++;
j++;
}
num = num + 5*five;
i = j;
i--;
}
else if(i-1>=0 && s[i] == 'X' && s[i-1] == 'I'){
num = num + 9;
}
else if(s[i] == 'X'){
int j = i;
int ten = 0;
while(j<len && s[j] == 'X'){
ten++;
j++;
}
if(j<len && (s[j] == 'L' || s[j] == 'C')){
ten--;
}
num = num + 10*ten;
i = j;
i--;
}
else if(i-1>=0 && s[i] == 'L' && s[i-1] == 'X'){
num = num + 40;
}
else if(s[i] == 'L'){
int j = i;
int fifty = 0;
while(j<len && s[j] == 'L'){
fifty++;
j++;
}
num = num + 50*fifty;
i = j;
i--;
}
else if(i-1>=0 && s[i] == 'C' && s[i-1] == 'X'){
num = num + 90;
}
else if(s[i] == 'C'){
int j = i;
int hundred = 0;
while(j<len && s[j] == 'C'){
hundred++;
j++;
}
if(j<len && (s[j] == 'D' || s[j] == 'M')){
hundred--;
}
num = num + 100*hundred;
i = j;
i--;
}
else if(i-1>=0 && s[i] == 'D' && s[i-1] == 'C'){
num = num + 400;
}
else if(s[i] == 'D'){
int j = i;
int fivehundred = 0;
while(j<len && s[j] == 'D'){
fivehundred++;
j++;
}
num = num + 500*fivehundred;
i = j;
i--;
}
else if(i-1>=0 && s[i] == 'M' && s[i-1] == 'C'){
num = num + 900;
}
else if(s[i] == 'M'){
int j = i;
int thousand = 0;
while(j<len && s[j] == 'M'){
thousand++;
j++;
}
num = num + 1000*thousand;
i = j;
i--;
}
else{
int j = i;
int one = 0;
while(j<len && s[j] == 'I'){
one++;
j++;
}
if(j<len && (s[j] == 'V' || s[j] == 'X')){
one--;
}
num = num + one;
i = j;
i--;
}
i++;
}
return num;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment