中文大写数字转换为阿拉伯数字(java)

本文介绍了在面试中遇到的将中文大写数字转换为阿拉伯数字的题目,详细解析了问题、思路和代码实现。通过建立汉字数字到阿拉伯数字的映射,并使用栈进行处理,解决了包括特殊年份格式在内的各种情况。
摘要由CSDN通过智能技术生成

1、引言

昨天面试了微软的暑期实习生,二面的时候面试官给出了这道题,起初拿到题目的时候感觉还挺简单的,想着直接用遍历加一个缓存应该就能搞定了,但是和面试官沟通了一会儿之后发现自己没考虑到的还有很多,最后在面试官的提醒下磕磕绊绊的算是弄出了最优解,不过时间已经不多了,最后也没有完全给出bug free的代码,虽然面试应该是凉了,不过面试体验还是很好的,微软的面试官人特别温柔,最后也给出了很多友善的建议,今天来重新复盘一遍这道题。

 

2、问题

请实现一个函数,输入是string类型的中文数字,输出是其对应的long值。例如:

输入 --> 输出

一百零一 --> 101

廿二 --> 22

二零一二 --> 2012

二十万五百亿三千零八万一千零卅五 --> 20050030081035

注:需要考虑的中文数字包括:零一二三四五六七八九十廿卅百千万亿。

 

3、思路

首先第一步,建立汉字数字到阿拉伯数字的映射关系,可以使用数组、哈希表等结构,看个人爱好,我使用的是哈希表。

这道题我最后使用的是栈的思想,面试官说这道题有三种比较优雅的解法,一种是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值