欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode 12. 整数转罗马数字 Java/C++ 贪心算法

程序员文章站 2024-03-23 09:27:52
...

Java/C++ 贪心算法

Java:

class Solution {
    public String intToRoman(int num) {
        StringBuilder s = new StringBuilder();
		int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
		String[] romans = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
		for(int i = 0; i < values.length; i++) {
			int value = values[i];
			String roman = romans[i];
			while(num >= value) {
				s.append(roman);
				num -= value;
			}
			if(num == 0) break;
		}
		return s.toString();
    }

}

C++:

class Solution {
public:
    string intToRoman(int num) {
		string s;
		int values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
		string romans[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
		for(int i = 0; i < sizeof(values); i++) {
			int value = values[i];
			string roman = romans[i];
			while(num >= value) {
				s.append(roman);
				num -= value;
			}
			if(num == 0) break;
		}
		return s;
    }
};