I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。 给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。
示例1:
1 2
输入: 3 输出: "III"
示例2:
1 2
输入: 4 输出: "IV"
示例3:
1 2
输入: 9 输出: "IX"
示例4:
1 2 3
输入: 58 输出: "LVIII" 解释: C = 100, L = 50, XXX = 30, III = 3.
示例5:
1 2 3
输入: 58 输出: "LVIII" 解释: C = 100, L = 50, XXX = 30, III = 3.
num_dict = defaultdict(int) for key in dict_roma.keys(): ifint(num / key) != 0: num_dict[key] += 1 num -= key # 查找完了,提前退出,后面的key无需再试探 if num == 0: break result = "" for key, value in num_dict.items(): if value != 0: result += dict_roma[key]
num_dict = OrderedDict() for key in dict_roma.keys(): if int(num / int(key)) != 0: # 如果计数字典中存在这个键 if key in num_dict: num_dict[key] += 1 else: num_dict[key] = 1 num -= int(key) # 查找完了,提前退出,a后面的key无需再试探 if num == 0: break result = "" for key, value in num_dict.items(): if value != 0: result += dict_roma[key][0]
base_list = list(dict_roma.keys()) result = 0 for item in base_list: try: base_index = s.index(item) num = dict_roma[item][0] result += num # 如果从头匹配到 if base_index == 0: s = s[len(item) + base_index:] # 如果在中间匹配到 else: s = s[:base_index] + s[len(item) + base_index:] except ValueError as e: continue return result