Untitled
unknown
c_cpp
a year ago
2.9 kB
8
Indexable
int romanToInt(char* s) { size_t length = strlen(s); int result = 0; for (int i = 0; i < length; ++i) { switch (s[i]) { case 'C': { if (s[i + 1] == 'D') { ++i; result += 400; break; } else if (s[i + 1] == 'M') { ++i; result += 900; break; } else if (s[i + 1] == 'C') { ++i; result += 100; if (s[i + 1] == 'C') { ++i; result += 100; } } result += 100; break; } case 'M': { result += 1000; break; } case 'D': { result += 500; break; } case 'X': { if (s[i + 1] == 'L') { ++i; result += 40; break; } else if (s[i + 1] == 'C') { ++i; result += 90; break; } else if (s[i + 1] == 'X') { ++i; result += 10; if (s[i + 1] == 'X') { ++i; result += 10; } } result += 10; break; } case 'L': { result += 50; break; } case 'I': { if (s[i + 1] == 'V') { ++i; result += 4; break; } else if (s[i + 1] == 'X') { ++i; result += 9; break; } else if (s[i + 1] == 'I') { ++i; result++; if (s[i + 1] == 'I') { ++i; result++; } } result++; break; } case 'V': { result += 5; break; } } } return result; }
Editor is loading...
Leave a Comment