Go语言学习之力扣-丑数|Go主题月

287 阅读2分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了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))
}

输出为:

image.png

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))
}

输出为:

image.png

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。