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