武汉的就业现状,已经这么差了???
在武汉你能接受本科学历一个月薪资3500吗?
今日算法题,给定一个罗马数字,将其转换成整数。输入保证在 1 到 3999 的范围内。下面是我的算法思路及实现,
引言
算法思路
理解罗马数字规则:罗马数字由七个不同的符号组成:I、V、X、L、C、D 和 M。它们分别代表 1、5、10、50、100、500 和 1000。罗马数字中,较小的数字在较大的数字右边时做加法,在较大的数字左边时做减法。 建立符号到值的映射:首先创建一个映射(如哈希表),将罗马数字的每个字符映射到相应的整数值。 遍历罗马数字:从左到右遍历罗马数字字符串,对每个字符代表的值进行累加,特别注意如果一个字符代表的值小于它右边的,那么这个字符代表的值应该被减去而不是加上。 计算总和:按照上述规则处理完整个字符串后,得到的总和即为罗马数字对应的整数值。
代码实现
C语言实现
#include <stdio.h>int romanToInt(char * s) {int map[256];map['I'] = 1; map['V'] = 5; map['X'] = 10; map['L'] = 50;map['C'] = 100; map['D'] = 500; map['M'] = 1000;int result = 0;for (int i = 0; s[i] != '\0'; i++) {if (map[s[i]] < map[s[i+1]])result -= map[s[i]];elseresult += map[s[i]];}return result;}
Java实现
public class Solution {public int romanToInt(String s) {Map<Character, Integer> map = new HashMap<>();map.put('I', 1); map.put('V', 5); map.put('X', 10); map.put('L', 50);map.put('C', 100); map.put('D', 500); map.put('M', 1000);int result = 0, prev = 0;for (char c : s.toCharArray()) {int value = map.get(c);result += value > prev ? (value - 2 * prev) : value;prev = value;}return result;}}
Python实现
def roman_to_int(s):roman_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}prev_value = total = 0for char in reversed(s):value = roman_map[char]total, prev_value = total - value if value < prev_value else total + value, valuereturn total
算法解析
示例和测试
测试代码(Python)
s = "MCMXCIV"print("罗马数字转整数:", roman_to_int(s))
总结
xdm我们团队自主研发的AI项目在2023年成都市重庆市联合举办的《创新创业大赛》中荣获二等奖,获得专家团队一致好评!
2023年可以说是AI爆发的一年,AI的强大已经足以颠覆我们的工作和生活,如果以前是互联网+,那么现在及未来就是AI+,所以你已经在通过AI来赋能了吗?
说真的AI带给我们的冲击太大,我们深刻的感知到:未来淘汰你的不一定是AI,但一定是会使用AI的人。
在不远的未来,AI必然代替人类大部分的工作。打败你的不是对手,颠覆你的不是同行!
我和我的团队,打造了这门关于AI的实操课程带你从小白成为ChatGPT专家,10倍提升业务生产力。
现在买教程立即送ChatGPT独立账号,支持修改密码,无需等待!
扫描下方二维码,购买《AI实战课程》,送ChatGPT独享账号!
推荐阅读: 1.华为发布 DiT 架构的图像生成模型,可直出 4K 分辨率图像。 2.GPTs商店应用测评 - GolfGPT:你的高尔夫球策略专家球童 3.GPTs应用测评 - Video GPT by VEED:为社交媒体生成视频