[LeetCode]Integer to Roman,解題報告
1990 ワード
前言
今週末に加えて今週の5日間は指導者の北郵烂尾のプロジェクトを手伝う必要があります.大変ですが、知遇の恩は確かに大きすぎて、新聞を出すつもりはありません.全力を尽くすしかありません.
仕方なくプロジェクトはsvnバージョンライブラリで制御して、githubの提出記録はまた1日の空白が多くて、見ていてとても不快で、いつ私はgithubの上でコードを提出しないで、必然的にsvnの上で提出して、へへ
タイトル
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
構想
タイトルは難しくありません.3999以内のアラビア数字がローマ数字に変わりました.前にローマ数字の特徴を書いた文章があります.リンクを参照してください.http://blog.csdn.net/wzy_1988/article/details/17057929
3849を例にとると、実は私たちは一人一人の数字を考慮するだけで、一人一人の数字digitについて、以下のいくつかの状況に分けられます. digit == 0 0 < digit <= 3 digit == 4 5 <= digit <= 9 digit == 9
一人一人に対して、この5つのケースを別々に処理すればよい.
ACコード
今週末に加えて今週の5日間は指導者の北郵烂尾のプロジェクトを手伝う必要があります.大変ですが、知遇の恩は確かに大きすぎて、新聞を出すつもりはありません.全力を尽くすしかありません.
仕方なくプロジェクトはsvnバージョンライブラリで制御して、githubの提出記録はまた1日の空白が多くて、見ていてとても不快で、いつ私はgithubの上でコードを提出しないで、必然的にsvnの上で提出して、へへ
タイトル
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
構想
タイトルは難しくありません.3999以内のアラビア数字がローマ数字に変わりました.前にローマ数字の特徴を書いた文章があります.リンクを参照してください.http://blog.csdn.net/wzy_1988/article/details/17057929
3849を例にとると、実は私たちは一人一人の数字を考慮するだけで、一人一人の数字digitについて、以下のいくつかの状況に分けられます.
一人一人に対して、この5つのケースを別々に処理すればよい.
ACコード
public class Solution {
public String intToRoman(int num) {
StringBuilder result = new StringBuilder();
char[] roman = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
int digit, base = 1000;
for (int i = roman.length + 1; i >= 0 && num > 0; i -= 2, base /= 10) {
digit = num / base;
if (digit == 0) {
continue;
} else if (digit <= 3) {
for (int j = 0; j < digit; j ++) {
result.append(roman[i - 2]);
}
} else if (digit == 4) {
result.append(roman[i - 2]);
result.append(roman[i - 1]);
} else if (digit <= 8) {
result.append(roman[i- 1]);
for (int j = digit - 5; j > 0; j --) {
result.append(roman[i - 2]);
}
} else if (digit == 9) {
result.append(roman[i - 2]);
result.append(roman[i]);
}
num = num % base;
}
return result.toString();
}
}