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

Leetcode面试经典150题-13.罗马数字转整数

解法都在代码里,不懂就留言或者私信,这个是相对简单点的,感觉会在低职级面试的时候考

class Solution {/**罗马数字转整数还是比较简单的,基本思路:把罗马数字字符串转成字符数组同时创建一个int型数组,遍历罗马数字字符串然后把每一位转换为数字放入int型数组里这个时候要注意不是简单的加的操作,如果当前位比后一位小说明这一位需要减去,比如IV是5-1而不是5+1所以我们每一位都要和后面一位比较,除非后面没有了 */public int romanToInt(String s) {char[] sArr = s.toCharArray();int[] num = new int[sArr.length];for(int i = 0; i < sArr.length; i++) {/**根据罗马数字当前字符给num中的对应位置赋值 */switch(sArr[i]) {case 'I':num[i] = 1;break;case 'V': num[i] = 5;break;case 'X':num[i] = 10;break;case 'L': num[i] = 50;break;case 'C':num[i] = 100;break;case 'D': num[i] = 500;break;case 'M':num[i] = 1000;break;}}/**遍历数字数组生成答案 */int ans = 0;for(int i = 0; i < num.length; i++) {/**已经是最后一位或者当前位比后一位大是加操作,否则是减操作 */if(i == num.length - 1 || num[i] >= num[i+1]) {ans += num[i];} else {ans -= num[i];}}return ans;}
}

这结果毫无疑问是最优解吧


http://www.mrgr.cn/news/12950.html

相关文章:

  • 高级调度1
  • CDGA|如何有效管理和利用数据成为了企业面临的一大挑战
  • 两点问题 模型
  • evalscope评测LLM
  • Springboot中使用Elasticsearch(部署+使用+讲解 最完整)
  • leetcode 3146 两个字符串的排列差
  • 【游戏】游戏中常见的运动方式及示例
  • 设置视图的宽高
  • 【asp.net】api后端返回前端json格式和字符串格式样式
  • 数据结构与算法(循环链表,双向链表)
  • 【Leetcode 2006 】 差的绝对值为 K 的数对数目 —— 哈希表
  • 数字签名:信息安全的新屏障
  • Nginx实现反向代理负载均衡实验
  • 【C/C++】C语言如何判断字符长度
  • git笔记:git常用命令备忘录
  • 信息安全--哈希算法 Hash
  • Ps:首选项 - 历史记录
  • Git 远程操作
  • MySQL的延迟复制
  • sqli-labs靶场通关攻略(41-45关)