diff options
| author | Mistivia <i@mistivia.com> | 2025-09-01 21:27:04 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-09-01 21:27:04 +0800 |
| commit | 6e4397623758ad5417a6b30858cefc223d51d282 (patch) | |
| tree | 4ac04fa1dcd24659bd2619fa64b896e2f1962b30 /rust/src/bin/p0013.rs | |
| parent | fff78815bae72051159a4a4ae5da34bea027317c (diff) | |
move
Diffstat (limited to 'rust/src/bin/p0013.rs')
| -rw-r--r-- | rust/src/bin/p0013.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/rust/src/bin/p0013.rs b/rust/src/bin/p0013.rs new file mode 100644 index 0000000..b5f8a62 --- /dev/null +++ b/rust/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 |
