当前位置: 首页 > wzjs >正文

wordpress分类信息导航谷歌推广优化

wordpress分类信息导航,谷歌推广优化,关键对话,网站做百度竞价💡 Swift:将整数转换为罗马数字(含思路讲解与详细注释) 罗马数字是一种古老的数字表示方式,虽然在现代我们不再使用它进行计算,但在表盘、章节、纪念碑等地方依然很常见。今天我们就来实现一个经典算法题&…

💡 Swift:将整数转换为罗马数字(含思路讲解与详细注释)

罗马数字是一种古老的数字表示方式,虽然在现代我们不再使用它进行计算,但在表盘、章节、纪念碑等地方依然很常见。今天我们就来实现一个经典算法题:将整数转换为罗马数字,并用 Swift 编写完整代码及思路解析。


🏛 罗马数字基本知识

罗马数字使用以下七个符号表示数字:

符号
I1
V5
X10
L50
C100
D500
M1000

此外,还需要掌握减法规则

当数字以 49 结尾时,不能用重复表示法,比如:

  • 4 应该写作 IV(5 - 1)
  • 9 应该写作 IX(10 - 1)
  • 40 应该写作 XL(50 - 10)
  • 90 应该写作 XC
  • 400 应该写作 CD
  • 900 应该写作 CM

这些特殊组合是算法的关键。


🎯 解题思路(贪心算法)

我们采用贪心算法的策略来处理:

  1. 准备一个有序数组(从大到小)保存所有罗马数字的值和对应符号。
  2. 遍历数组,每次从剩余的 num 中尽量减去最大的值,并把对应的符号拼接到结果字符串中。
  3. 重复步骤直到 num == 0

✅ Swift 实现(含详细注释)

func intToRoman(_ num: Int) -> String {// 从大到小排列的数值-符号对,包括减法形式(如 IV、CM 等)let valueSymbolPairs: [(Int, String)] = [(1000, "M"), (900, "CM"), (500, "D"), (400, "CD"),(100, "C"),  (90, "XC"), (50, "L"),  (40, "XL"),(10, "X"),   (9, "IX"),  (5, "V"),   (4, "IV"),(1, "I")]var num = num           // 输入整数var result = ""         // 存放最终结果// 遍历所有的数值-符号对for (value, symbol) in valueSymbolPairs {// 每次尽可能多减去当前 valuewhile num >= value {result += symbol  // 拼接对应的罗马数字num -= value      // 减去对应的值}}return result
}

🧪 示例输入输出

print(intToRoman(3))     // 输出: "III"
print(intToRoman(58))    // 输出: "LVIII"
print(intToRoman(1994))  // 输出: "MCMXCIV"

⚙️ 时间和空间复杂度分析

  • 时间复杂度:O(1)
    输入整数范围是固定(通常为 1~3999),最多遍历 13 个符号,操作次数是常数级别。

  • 空间复杂度:O(1)
    只使用常量数组和一个可变字符串,无额外空间开销。


🧠 延伸思考:如何将罗马数字转换为整数?

这是这道题的逆问题,也非常经典。下面是详细的解法与注释。

我们要根据罗马数字字符串(例如 "MCMXCIV")逐字符解析出它的整数值。核心逻辑是:

  • 如果当前字符对应的值 小于 下一个字符,说明这是一种减法组合(如 IV, XC, CM)。
  • 否则就是普通加法。

Swift 示例代码(含详细备注)

func romanToInt(_ s: String) -> Int {// 罗马字符对应的整数映射表let romanMap: [Character: Int] = ["I": 1, "V": 5, "X": 10,"L": 50, "C": 100,"D": 500, "M": 1000]let chars = Array(s)  // 将字符串转换为字符数组,便于索引访问var total = 0         // 最终结果var i = 0             // 当前遍历的位置while i < chars.count {let currentVal = romanMap[chars[i]]!  // 当前字符的数值// 判断是否存在下一个字符,并比较其值if i + 1 < chars.count, let nextVal = romanMap[chars[i + 1]], currentVal < nextVal {// 如果当前值小于下一个值,说明是减法组合(如 IV = 5 - 1)total += (nextVal - currentVal)i += 2  // 跳过这两个字符} else {// 普通加法情况(如 VI = 5 + 1)total += currentVali += 1}}return total
}

示例验证

print(romanToInt("III"))      // 输出: 3
print(romanToInt("LVIII"))    // 输出: 58
print(romanToInt("MCMXCIV"))  // 输出: 1994

🏁 总结

  • 本题的核心是贪心策略:总是选用当前能减去的最大数值的罗马符号。
  • 处理好减法组合(如 IV、IX 等)是关键。
  • Swift 实现简洁高效,时间和空间复杂度都为常数级。
  • 进一步的练习是:实现罗马数字转整数,掌握双向处理。

如果你觉得这篇文章对你有帮助,不妨分享给你的 Swift 同学一起学习吧。也欢迎留言交流更多有趣的算法题目!


文章转载自:

http://CMRnUt4X.kkcsj.cn
http://YfNyzMyE.kkcsj.cn
http://JD8me1ct.kkcsj.cn
http://cyarTbx0.kkcsj.cn
http://WQ6U5rjg.kkcsj.cn
http://OxCjzVIr.kkcsj.cn
http://mi52aPgu.kkcsj.cn
http://ReRpXauB.kkcsj.cn
http://O9lflC69.kkcsj.cn
http://VXAepjzL.kkcsj.cn
http://WikP8RPP.kkcsj.cn
http://xYbGQCbp.kkcsj.cn
http://BXiIsMrE.kkcsj.cn
http://i4XwRKqU.kkcsj.cn
http://dzDsRMHl.kkcsj.cn
http://TuKYXCR0.kkcsj.cn
http://zJ4VqYqV.kkcsj.cn
http://boPxXhZa.kkcsj.cn
http://1Yq7JIu5.kkcsj.cn
http://A8Wd3rMR.kkcsj.cn
http://RiCyeQ3S.kkcsj.cn
http://jfBM7AnJ.kkcsj.cn
http://nIUXVzBu.kkcsj.cn
http://8n31m8fR.kkcsj.cn
http://vT4ydGyu.kkcsj.cn
http://EQrrYqyp.kkcsj.cn
http://F6xotgd2.kkcsj.cn
http://rFBveQOF.kkcsj.cn
http://iOyfQgxh.kkcsj.cn
http://NnuH56Yz.kkcsj.cn
http://www.dtcms.com/wzjs/621000.html

相关文章:

  • 重庆璧山网站建设网站建设结构
  • 企业网站源码生成器wordpress qq登录
  • 销售做网站名字找备案网站
  • 阿里云 备案 网站服务内容网页设计实验报告问题讨论
  • 郑州市建设厅官方网站如何修改wordpress的登录密码
  • 企业网站优化公司哪家好e建网站
  • 企业网站推广策划方法WordPress多语言多站点
  • 网站制作与建设书籍重庆市建设领域农民工工资专户网站
  • 怎么找到域名做的那个网站建站基础:wordpress安装教程图解 - 天缘博客
  • 营销型网站教程网站构成的作用
  • 找网页模板的网站好淘宝客返利网站程序
  • 网站上传文件不存在烟台网站制作设计
  • 四川城乡和住房建设厅网站首页网页设计平台有哪些
  • 在阿里云做视频网站需要什么wordpress 弹幕播放器
  • 阿里云域名续费网站省财政厅经济建设处网站
  • 网站地图怎么制作wordpress编辑器汉
  • 国外js特效网站北京彩页设计制作
  • 给别人做网站多少钱做交通工程刬线的网站公司
  • 游戏开发和网站开发哪个好玩龙泉驿网站seo
  • 钓鱼网站 企业形象网站建设方案推广
  • 网站采集功能wordpress拖拽主题
  • 接网站开发的公司北京市工商注册登记网
  • 营销网站建站企业网站搜索引擎优化的方法
  • 做网站给客户聊天记录哈尔滨建设工程有限公司
  • 生产建设兵团第三师政务网站eyoucms插件
  • 电子商务网站定制有没有做盗版电影网站犯罪的
  • 论坛网站 备案it人才外包
  • 网站建设 上海网站建网站建设实训心得体会
  • 重庆网站制作设计获客磁县专业做网站
  • 晋江文创园网站建设h5微信网站建设