作者:看那个码农
公众号:看那个码农
上期内容介绍了Go语言学习之strings包常用字符串操作总结|Go主题月
- strings包常用字符串操作总结
本篇内容将继续带领大家走进Go语言的世界。
1.本文简介
Go语言学习之力扣-丑数
来源于:Leetcode263. 丑数
2.题目描述
给你一个整数 n ,请你判断n是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数就是只包含质因数 2、3、5 的正整数。
示例 1:
输入:n = 6
输出:true
解释:6 = 2 × 3
示例 2:
输入:n = 8
输出:true
解释:8 = 2 × 2 × 2
提示: -2^31 <= n <= 2^31 - 1
3.思路与方法
根据题目中丑数的定义可得,0和负整数一定不是丑数。
当n>0时,若n是丑数,则n可以写成n=2^a*3^b*5^c的形式,其中a,b,c都均为非负整数,
当a,b,c均为0时,n=1
我们可以对n反复除以2,3,5的操作,直到最后n的值等于1,则说明n不包含其它质因数,n为丑数,
否则n包含其它质因数,不是丑数。
我们可以使用for循环语句嵌套if条件语句或者switch条件语句的形式来对n进行上述算法操作。
4.代码实现
我们针对上述的思路与方法,做了两种代码解决方案,详情如下:
4.1 if条件语句
具体实现代码如下:
package main
import (
"fmt"
)
func isUgly(n int) bool {
if n==0 && n<=0{
return false
}
for n!=1{
if n%2==0{
n/=2
}else if n%3==0{
n/=3
}else if n%5==0{
n/=5
}else{
return false
}
}
return true
}
func main() {
str:= 100
fmt.Println("100是否是丑数:",isUgly(str))
}
输出为:
4.2 switch条件语句
当然除了if语句,我们也可以使用switch语句来进行编码,
具体代码案例如下:
package main
import (
"fmt"
)
func isUgly(n int) bool {
if n <= 0 {
return false
}
for n > 1 {
switch n > 1 {
case n%2 == 0:
n /= 2
case n%3 == 0:
n /= 3
case n%5 == 0:
n /= 5
default:
return false
}
}
return true
}
func main() {
str:= 100
fmt.Println("100是否是丑数:",isUgly(str))
}
输出为:
如果你觉得这篇内容对你有帮助的话:
1、点赞支持下吧,让更多的人也能看到这篇内容
2、关注公众号:看那个码农,我们一起学习一起进步。