锁定老帖子 主题:网易公司刁难的面试题,留下你的见解
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-10
确实不是刁难啊 英文是以三作为一个循环 不停的以3位作为一个整体进行匹配 比如 123 就是 one hundred twenty three 那么假如之前还有321 就直接在刚才的123前 + 上 thousand and 然后在匹配啊 3位的匹配很好写的
真的不知道LZ为什么说刁难 还是我理解有误 |
|
返回顶楼 | |
发表时间:2009-09-10
dingjun123 写道 面试题嘛,转个别人写的
package name.zrl; public class ListTest { static String[] to_19 = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; static String[] tens = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; static String[] denom = { "", "thousand ", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion", "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion", "quattuordecillion", "sexdecillion", "septendecillion", "octodecillion", "novemdecillion", "vigintillion" }; public static void main(String[] argv) throws Exception { long tstValue = 1234567890987654321L; ListTest itoe = new ListTest(); System.out.println(itoe.english_number(tstValue)); } private String convert_nn(int val) { if (val < 20) return to_19[val]; int flag = val / 10 - 2; if (val % 10 != 0) return tens[flag] + "-" + to_19[val % 10]; else return tens[flag]; } private String convert_nnn(int val) { String word = ""; int rem = val / 100; int mod = val % 100; if (rem > 0) { word = to_19[rem] + " hundred "; } if (mod > 0) { word = word + convert_nn(mod); } return word; } public String english_number(long val) { if (val < 100) { System.out.println((int) val); return convert_nn((int) val); } if (val < 1000) { return convert_nnn((int) val); } for (int v = 0; v < denom.length; v++) { int didx = v - 1; long dval = new Double(Math.pow(1000, v)).longValue(); if (dval > val) { long mod = new Double(Math.pow(1000, didx)).longValue(); int l = (int) (val / mod); long r = (long) (val - (l * mod)); String ret = convert_nnn(l) + " " + denom[didx]; if (r > 0) { ret = ret + ", " + english_number(r); } return ret; } } return null; } } blue兄,那么晚还回帖真敬业啊。 这个版本有些问题,缺少and,没考虑101这种情况吧。 |
|
返回顶楼 | |