如何将123456008转化为文字一亿二千三百四十五万六千零八

 在知乎上看到一个面试题,如何将123456008转化为一亿二千三百四十五万六千零八,题主在30分钟内使用js完成该算法,感觉很有趣,于是决定挑战下自己,使用Swift完成这个问题.

 虽最后写出方法,但没有在30分钟内完成很是遗憾.下面贴出方法,记录下:

func printNumber(_ n: Int) -> String {
    func numToText(_ i: Int) -> String {
        switch i {
        case 0:
            return "零"
        case 1:
            return "一"
        case 2:
            return "二"
        case 3:
            return "三"
        case 4:
            return "四"
        case 5:
            return "五"
        case 6:
            return "六"
        case 7:
            return "七"
        case 8:
            return "八"
        case 9:
            return "九"
        default:
            return ""
        }
    }
    
    let digits = ["","十","百","千"]
    let digitsDigits = ["","万","亿"]
    var num: Int = n
    var index: Int = 0
    var str = ""
    while num > 0 {
        
        let i: Int = num % 10
        var iStr = numToText(i)
        num = (num - i) / 10
        
        if i == 0{
            if str.count > 0 && str.hasPrefix("零") == false {
                str = iStr + str
            }
        }else{
            iStr = iStr + digits[index % 4]
            if iStr == "一十" && num % 10 != 0 { iStr = "十" }
            iStr = iStr + (index % 4 == 0 ? digitsDigits[index/4]:"")
            str = iStr + str
        }
        index += 1
    }
    return str
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容