29 lines
709 B
Rust
29 lines
709 B
Rust
use std::collections::HashMap;
|
|
|
|
impl Solution {
|
|
pub fn roman_to_int(s: String) -> i32 {
|
|
let mut rom2int = HashMap::new();
|
|
rom2int.insert('I', 1);
|
|
rom2int.insert('V', 5);
|
|
rom2int.insert('X', 10);
|
|
rom2int.insert('L', 50);
|
|
rom2int.insert('C', 100);
|
|
rom2int.insert('D', 500);
|
|
rom2int.insert('M', 1000);
|
|
|
|
let mut sum = -2000;
|
|
let mut prev = 2000;
|
|
let mut cur;
|
|
for c in s.chars(){
|
|
cur = *rom2int.get(&c).unwrap();
|
|
if cur > prev{
|
|
sum -= prev;
|
|
} else {
|
|
sum += prev;
|
|
}
|
|
prev = cur;
|
|
}
|
|
|
|
return sum + prev;
|
|
}
|
|
} |