罗马数字七个对应的:
<pre name="code" class="java"> 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;
public int romanToInt(String s) {
int ret = toNumber(s.charAt(0));
for (int i = 1; i < s.length(); i++) {
if (toNumber(s.charAt(i-1)) < toNumber(s.charAt(i))) {
ret += toNumber(s.charAt(i)) - 2 * toNumber(s.charAt(i-1)); //此处应减去2次
} else {
ret += toNumber(s.charAt(i));
}
}
return ret;
}
public int toNumber(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;
}
return 0;
}
//<pre name="code" class="java"> public String intToRoman(int num) {
String str ="";
String symbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
int value[]= {1000,900,500,400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; //所有的整数都可以用这几个数表示出来
for(int i=0;num!=0;++i)
{
while(num>=value[i])
{
num-=value[i];
str+=symbol[i];
}
}
return str;
}
<span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px;">Given input is guaranteed to be less than 2</span><span style="box-sizing: border-box; position: relative; line-height: 0; vertical-align: baseline; top: -0.5em; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">31</span><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px;"> - 1.</span>
<span style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;color:#333333;"><span style="font-size: 14px; line-height: 30px;">三位三位的处理 题目保证不会超过十二位
</span></span><pre name="code" class="java"> public String numberToWords(int num) {
if(num==0)
return "Zero";
String res = convertHundred(num%1000);//先转化后三位;
String []arr ={"Thousand", "Million", "Billion"};
for (int i = 0; i < 3; ++i) {
num /= 1000;
res = num % 1000!=0 ? convertHundred(num % 1000) + " " + arr[i] + " " + res : res;
}
return res.trim();
}
String convertHundred(int num)//三位的详细转化
{
String[] arr1={"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
String[] arr2={"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
String res ="";
int a = num / 100, b = num % 100, c = num % 10;
res = b < 20 ? arr1[b] : arr2[b / 10] + (c!=0 ? " " + arr1[c] : "");
if (a > 0) res = arr1[a] + " Hundred" + (b!=0 ? " " + res : "");
return res;
}