From dc1f0c4c0096013799416664894c5194dc7e1f52 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- store/works/solutions/leetcode/cpp/12.cpp | 51 +++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 store/works/solutions/leetcode/cpp/12.cpp (limited to 'store/works/solutions/leetcode/cpp/12.cpp') diff --git a/store/works/solutions/leetcode/cpp/12.cpp b/store/works/solutions/leetcode/cpp/12.cpp new file mode 100644 index 0000000..e334895 --- /dev/null +++ b/store/works/solutions/leetcode/cpp/12.cpp @@ -0,0 +1,51 @@ +#include + +using std::string; + +const char *roman_digits = "IVXLCDM"; + +class Solution +{ +public: + string intToRoman(int num) + { + string result; + + int current_digit_index = 0; + + while (num != 0) + { + const int digit = num % 10; + if (digit == 9) + { + result += roman_digits[current_digit_index + 2]; + result += roman_digits[current_digit_index]; + } + else if (digit <= 8 && digit >= 5) + { + for (int i = 0; i < digit - 5; i++) + { + result += roman_digits[current_digit_index]; + } + result += roman_digits[current_digit_index + 1]; + } + else if (digit == 4) + { + result += roman_digits[current_digit_index + 1]; + result += roman_digits[current_digit_index]; + } + else + { + for (int i = 0; i < digit; i++) + { + result += roman_digits[current_digit_index]; + } + } + + num /= 10; + current_digit_index += 2; + } + + return string(result.crbegin(), result.crend()); + } +}; \ No newline at end of file -- cgit v1.2.3