本文记录2022年四月份字节跳动三面的算法题目。
题目描述
把一个整数转成字符串(不考虑负数,整数单位最大为亿),举个例子:
123->一百二十三
1200345->一百二十万零三百四十五
思路
当时做的时候没仔细考虑,妈的上来就开始写,下面贴一下错误思路:
错误思路
建立两个字典,第一个字典存储0-10的数字,第二个字典存储(十、百、千、万、亿)的单位,通过不断取余拿到最后一个数字后查询字典然后进行字符串拼接,这种思路问题有两个:
- 不好处理取余后数字为0的情况(需要加一堆if)
- 对于高位譬如12000000这种数字不能处理高位的数量,这个例子1200就取不出来
正确思路
先进行字典建立,字典建立过程和上述错误思路是一样的
然后把数字看成多个部分:
- 大于1亿的
- 大于1万但小于1亿的
- 大于1千但小于1万的
- 大于1百但小于1千的
- 大于20但小于100的
- 大于10但小于20的
- 0到10
通过对不同部分的单位进行取整得到当前单位的数量,然后在对余数部分进行递归操作,中间当然也要处理取余和取整结果为0的情况。
举个例子:
对于120103206789 这个数字
先对亿取整后为1201,取余后为3206789,字符串为1201亿
再对3206789进行万取整后为320、取余后为6789
6789对千取整为6、取余为789
789对百取整为7、取余为89
89对10取整为8、取余为9
代码
代码更新在我的Github中