使用 Java 中的 Hashmap 将罗马数字转换为十进制
原文:https://www . geesforgeks . org/convert-a-Roman-number-to-decimal-using-hashmap-in-Java/
给定一个罗马数字,任务是找到相应的十进制值。
注:罗马数字用 I、V、X、L、C、D、m 七种不同的符号表示。
示例:
输入:“III”
输出:3
输入:“MDCCLX”
输出:1760
进场:
- 循环遍历包含罗马数字的字符串中的每个字符。
- 将当前罗马符号的值与其右侧罗马符号的值进行比较。如果当前值大于或等于右侧符号的值,则将当前符号的值添加到总数中。如果当前值小于右侧符号的值,则从总数中减去当前符号的值。
下面是上述方法的实现:
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to Convert a Roman
// Number to Decimal using Hashmap
import java.io.*;
import java.util.Scanner;
import java.util.HashMap;
class solution {
int romanToInt(String s)
{
// Create a empty hash map.
HashMap<Character, Integer> map = new HashMap<>();
// Putting value in hash map.
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);
// Creating integer variable to store result.
int result = 0;
// initialize loop to iterate in string.
for (int i = 0; i < s.length(); i++) {
// Checking that current element
// is not smaller then previous
if (i > 0
&& map.get(s.charAt(i))
> map.get(s.charAt(i - 1))) {
result += map.get(s.charAt(i))
- 2 * map.get(s.charAt(i - 1));
}
else {
result += map.get(s.charAt(i));
}
}
// Returning the integer value of Roman number.
return result;
}
}
public class GFG {
public static void main(String[] args)
{
String s;
// Scanner sc = new Scanner(System.in);
// s = sc.nextLine();
solution gfg = new solution();
System.out.println(gfg.romanToInt("MDCCLX"));
}
}
输出:
1760
版权属于:月萌API www.moonapi.com,转载请注明出处