邓心一 пре 6 година
родитељ
комит
e8d825c5ee
1 измењених фајлова са 91 додато и 1 уклоњено
  1. 91 1
      hard/273.integer-to-english-words.go

+ 91 - 1
hard/273.integer-to-english-words.go

@@ -1,3 +1,93 @@
 func numberToWords(num int) string {
-	
+	if num == 0 {
+		return "Zero"
+	}
+	return ntowRecurse(num)
 }
+
+func ntowRecurse(num int) (res string) {
+	if num/1000000000 != 0 {
+		res += ntowRecurse(num/1000000000) + getWord(0) + getWord(1000000000) + getWord(0) + ntowRecurse(num%1000000000)
+	} else if num/1000000 != 0 {
+		res += ntowRecurse(num/1000000) + getWord(0) + getWord(1000000) + getWord(0) + ntowRecurse(num%1000000)
+	} else if num/1000 != 0 {
+		res += ntowRecurse(num/1000) + getWord(0) + getWord(1000) + getWord(0) + ntowRecurse(num%1000)
+	} else if num/100 != 0 {
+		res += ntowRecurse(num/100) + getWord(0) + getWord(100) + getWord(0) + ntowRecurse(num%100)
+	} else if 20 <= num {
+		res += getWord(num-num%10) + getWord(0) + ntowRecurse(num%10)
+	} else if num != 0 {
+		res = getWord(num)
+	}
+	return strings.Trim(res, " ")
+}
+
+func getWord(num int) string {
+	switch num {
+	case 1:
+		return "One"
+	case 2:
+		return "Two"
+	case 3:
+		return "Three"
+	case 4:
+		return "Four"
+	case 5:
+		return "Five"
+	case 6:
+		return "Six"
+	case 7:
+		return "Seven"
+	case 8:
+		return "Eight"
+	case 9:
+		return "Nine"
+	case 10:
+		return "Ten"
+	case 11:
+		return "Eleven"
+	case 12:
+		return "Twelve"
+	case 13:
+		return "Thirteen"
+	case 14:
+		return "Fourteen"
+	case 15:
+		return "Fifteen"
+	case 16:
+		return "Sixteen"
+	case 17:
+		return "Seventeen"
+	case 18:
+		return "Eighteen"
+	case 19:
+		return "Nineteen"
+	case 20:
+		return "Twenty"
+	case 30:
+		return "Thirty"
+	case 40:
+		return "Forty"
+	case 50:
+		return "Fifty"
+	case 60:
+		return "Sixty"
+	case 70:
+		return "Seventy"
+	case 80:
+		return "Eighty"
+	case 90:
+		return "Ninety"
+	case 100:
+		return "Hundred"
+	case 1000:
+		return "Thousand"
+	case 1000000:
+		return "Million"
+	case 1000000000:
+		return "Billion"
+	default:
+		return " "
+	}
+}
+