锁定老帖子 主题:网易公司刁难的面试题,留下你的见解
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-09
最后修改:2009-09-09
sxyx2008 写道 bcccs 写道 sxyx2008 写道 今天去网易面试了
其中有这么一道题很郁闷 没答出来 原题是这样的 要求用户从键盘上输入一个数字,数字范围是(9位数以内) 要求输出正确的英文单词来 如: 用户输入: 1,返回:one 啊?刁难?哪里刁难 了? 请留下你的见解 |
|
返回顶楼 | |
发表时间:2009-09-09
下一站,火星 写道 楼上的哥哥
引用 今天去网易面试了
其中有这么一道题很郁闷 没答出来 原题是这样的 要求用户从键盘上输入一个数字,数字范围是(9位数以内) 要求输出正确的英文单词来 如: 用户输入: 1,返回:one 你到底想怎样 哈哈 火星兄很无奈的说 |
|
返回顶楼 | |
发表时间:2009-09-09
首先,英文单词是3位3位来的。分别是million, thousand和啥都没有的后缀。
然后问题就变成解析一个三位数的问题了,譬如,123翻译成英文。 这就简单了,%100, %10, %1,得出的值,对应到3个数组里面去。。。 面试题嘛,就这样说行了,不用给代码了吧?这很简单阿。。。 |
|
返回顶楼 | |
发表时间:2009-09-09
搞个计数器判断下就可以了,和汉字按首字母排序差不多的问题 |
|
返回顶楼 | |
发表时间:2009-09-09
最后修改:2009-09-09
101/1001这样的也是要考虑的吧
|
|
返回顶楼 | |
发表时间:2009-09-09
sxyx2008 写道 今天去网易面试了
其中有这么一道题很郁闷 没答出来 原题是这样的 要求用户从键盘上输入一个数字,数字范围是(9位数以内) 要求输出正确的英文单词来 如: 用户输入: 1,返回:one 这道题很简单,如果这也不会的话,转行做QA吧,真的。。。 |
|
返回顶楼 | |
发表时间:2009-09-09
bcccs 写道 101/1001这样的也是要考虑的吧
是关于我给的那个算法 引用 首先,英文单词是3位3位来的。分别是million, thousand和啥都没有的后缀。
然后问题就变成解析一个三位数的问题了,譬如,123翻译成英文。 这就简单了,%100, %10, %1,得出的值,对应到3个数组里面去。。。 面试题嘛,就这样说行了,不用给代码了吧?这很简单阿。。。 的问题吗? 这种情况已经考虑进来的阿。 1001-〉分成2档,1 -> thousand, 001 -> 啥都没有 1/100 = 0, ["","one hundred and ", "two hundred and ", "three hundred and "..."nine hundred and "] (1-0*100)/10 = 0, ["", "ninty" ...] (1-0*100-1*10)/1 = 1 ["", "nine"...] 那个%100,%10,%1是指那个经典的算法,学校里面求每位是几那个。 |
|
返回顶楼 | |
发表时间:2009-09-09
想问网易是否诚心招人啊?
|
|
返回顶楼 | |
发表时间:2009-09-09
下一站,火星 写道 搞个计数器判断下就可以了,和汉字按首字母排序差不多的问题 越来越不理解了.... 如果那么简单,请把代码帖出来吧 |
|
返回顶楼 | |
发表时间:2009-09-10
最后修改:2009-09-10
面试题嘛,转个别人写的
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; } } |
|
返回顶楼 | |