1、引言
昨天面试了微软的暑期实习生,二面的时候面试官给出了这道题,起初拿到题目的时候感觉还挺简单的,想着直接用遍历加一个缓存应该就能搞定了,但是和面试官沟通了一会儿之后发现自己没考虑到的还有很多,最后在面试官的提醒下磕磕绊绊的算是弄出了最优解,不过时间已经不多了,最后也没有完全给出bug free的代码,虽然面试应该是凉了,不过面试体验还是很好的,微软的面试官人特别温柔,最后也给出了很多友善的建议,今天来重新复盘一遍这道题。
2、问题
请实现一个函数,输入是string类型的中文数字,输出是其对应的long值。例如:
输入 --> 输出
一百零一 --> 101
廿二 --> 22
二零一二 --> 2012
二十万五百亿三千零八万一千零卅五 --> 20050030081035
注:需要考虑的中文数字包括:零一二三四五六七八九十廿卅百千万亿。
3、思路
首先第一步,建立汉字数字到阿拉伯数字的映射关系,可以使用数组、哈希表等结构,看个人爱好,我使用的是哈希表。
这道题我最后使用的是栈的思想,面试官说这道题有三种比较优雅的解法,一种是