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

2018-04-17  本文已影响15人  Mage

 在知乎上看到一个面试题,如何将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
}
上一篇 下一篇

猜你喜欢

热点阅读