/*
我們知道分?jǐn)?shù)由分子和分母組成忍宋,所以給定你兩個(gè)正整數(shù)钠右,第一的代表分子,第二個(gè)代表分母树姨,你能不能把他們化作最簡(jiǎn)的形式輸出?
例:
input:
4 8
out put:
1/2
*/
//輾轉(zhuǎn)相除法
func test(molecular:Int, denominator: Int){
if molecular <= 0 && denominator <= 0 { return }
let Commondivisor = getCommondivisor(number1: molecular, number2: denominator)
print("the Greatest Common divisor is \(Commondivisor)")
print("the minimalist is \(molecular / Commondivisor)/\(denominator / Commondivisor) ")
}
//遞歸
func getCommondivisor(number1: Int, number2: Int) -> Int {
let remainder = number1 % number2
if remainder == 0 {
return number2
} else {
return getCommondivisor(number1: number2, number2: remainder)
}
}
test(molecular: 100, denominator: 200)
/*
我們都知道數(shù)字的分?jǐn)?shù)形式化簡(jiǎn)雇庙,那當(dāng)然我們還有字幕形式的分子分母化簡(jiǎn)鱼鼓,給你兩個(gè)字母(都是合法的小寫(xiě)形式),請(qǐng)你輸出他的最簡(jiǎn)形式
例:
input:
a ab
output:
1/b
*/
//猜想:通過(guò)哈希表摘出分子分母分別的字母數(shù)量宣蔚,然后進(jìn)行刪減最后拼裝
func test(molecular:String, denominator: String){
var mDic = [Character:Int]()
var d = ""
var m = ""
//將分子添加入哈希表
for mC in molecular.characters{
if var a = mDic[mC] {
a += 1
mDic[mC] = a
} else {
mDic[mC] = 1
}
}
//遍歷分母對(duì)哈希表進(jìn)行刪改
for dC in denominator.characters {
if var a = mDic[dC] {
if a != 0 {
a -= 1
mDic[dC] = a
} else {
d.append(dC)
}
} else {
d.append(dC)
}
}
//將哈希表刪改后的數(shù)據(jù)填入分子字符串
for (v,k) in mDic{
for _ in 0..<k{
m.append(v)
}
}
//字符串整合
if m.isEmpty {
if d.isEmpty {
print(1)
} else {
print("1 / \(d)")
}
} else {
if d.isEmpty {
print("\(m)")
} else {
print("\(m) / \(d)")
}
}
}
test(molecular: "aaa", denominator: "aaabbb")
output:
the Greatest Common divisor is 100
the minimalist is 1/2
1 / bbb
Program ended with exit code: 0