首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

网易公司刁难的面试题,留上你的见解

2012-11-06 
网易公司刁难的面试题,留下你的见解今天去网易面试了其中有这么一道题很郁闷没答出来原题是这样的要求用户

网易公司刁难的面试题,留下你的见解
今天去网易面试了
其中有这么一道题很郁闷
没答出来
原题是这样的
要求用户从键盘上输入一个数字,数字范围是(9位数以内)
要求输出正确的英文单词来
如:
用户输入:
1,返回:one

看了很多大家的评论
我想大家还没看清人家出这道题的真正用意
我在解释一下
用户任意从键盘上输入一个数字,要求你用代码实现该数字的汉译英

大家提到了switch,可是你想想数字范围是9位数以内,用户输入的数字是不定的,你怎么取舍,总不能写n个switch吧
还有人说了类似将阿拉伯数字用万千等表示的,这也太easy了吧,网易会考这么低能的题吗
大家不要扯跟这道题目无关的东西好吗 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这种情况吧。

热点排行