diff options
| author | Mistivia <i@mistivia.com> | 2025-08-21 15:15:19 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-08-21 15:15:19 +0800 |
| commit | ba4b0d7e1448c575f78fdc17fb150cdaf282a093 (patch) | |
| tree | d64e846775a21da239b4f6898204db47ea356fc0 /src/bin/p0013.rs | |
| parent | 00140baa96a510404fc925e2562769ed3ab19190 (diff) | |
solve 13
Diffstat (limited to 'src/bin/p0013.rs')
| -rw-r--r-- | src/bin/p0013.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/bin/p0013.rs b/src/bin/p0013.rs new file mode 100644 index 0000000..b5f8a62 --- /dev/null +++ b/src/bin/p0013.rs @@ -0,0 +1,33 @@ +impl Solution { + fn char_to_int(c: char) -> i32 { + match c { + 'I' => 1, + 'V' => 5, + 'X' => 10, + 'L' => 50, + 'C' => 100, + 'D' => 500, + 'M' => 1000, + _ => 0, + } + } + pub fn roman_to_int(s: String) -> i32 { + let mut sum = 0; + for i in 0..s.len() { + if i < s.len() - 1 { + if Self::char_to_int(s.as_bytes()[i as usize] as char) + < Self::char_to_int(s.as_bytes()[i+1 as usize] as char) { + sum = sum - Self::char_to_int(s.as_bytes()[i as usize] as char); + continue; + } + } + sum = sum + Self::char_to_int(s.as_bytes()[i as usize] as char); + } + sum + } +} + +struct Solution {} +fn main() { + println!("{}", Solution::roman_to_int("MCMXCIV".to_string())); +}
\ No newline at end of file |
