LeetCode13——罗马数字转整数

编程入门 行业动态 更新时间:2024-10-23 13:29:07

LeetCode13——<a href=https://www.elefans.com/category/jswz/34/1728649.html style=罗马数字转整数"/>

LeetCode13——罗马数字转整数


解题思想:
前后指针
左边比右边小 做减法
左边比右边大 做加法
最后一个数字直接加。

package keepcoding.leetcode.leetcode13;public class Result02 {public static void main(String[] args) {int result = romanToInt("XIV");System.out.println(result);}public static int romanToInt(String s) {//sum用于记录总和int sum = 0;//类似双指针 preNUM  num//初始pre在0 num 在1int preNum = getValue(s.charAt(0));//String类的CharAt(int i)方法——返回i位置上的字符for(int i = 1;i < s.length(); i ++) {int num = getValue(s.charAt(i));//左边大于右边做减法if(preNum < num) {sum -= preNum;} else {//否则做加法sum += preNum;}//运算完后,前指针 后移preNum = num;}//最后一位直接相加sum += preNum;return sum;}private static int getValue(char ch) {switch(ch) {case 'I': return 1;case 'V': return 5;case 'X': return 10;case 'L': return 50;case 'C': return 100;case 'D': return 500;case 'M': return 1000;default:  return 0;}}}

官方解:

package keepcoding.leetcode.leetcode13;import java.util.HashMap;public class Result01 {public static void main(String[] args) {int result = romanToInt("MCMXCIV");System.out.println(result);}public static int romanToInt(String s){//建立转换表HashMap<Character, Integer> map = new HashMap<Character,Integer>();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);//定义result 用于记录返回的结果int result = 0;for (int i = 0; i < s.length(); i++) {//s.charAt(i)返回字符串s在i位置上的字符;map.get(key) 获取哈希表对应键的值int value = map.get(s.charAt(i));//i < s.length()-1 防// 止i+1越界if (i< s.length()-1 && value <map.get(s.charAt(i+1))){//左边比右边小 相减result -= value;}else{result += value;}}return result;}
}

更多推荐

LeetCode13——罗马数字转整数

本文发布于:2023-12-05 21:11:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1665302.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:罗马数字   整数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!