Golang每日一练(leetDay0061) 表列序号、阶乘后的零

简介: Golang每日一练(leetDay0061) 表列序号、阶乘后的零

171. Excel 表列序号 Excel Sheet Column Number


给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号


例如:

A -> 1

B -> 2

C -> 3

...

Z -> 26

AA -> 27

AB -> 28  

...

示例 1:

输入: columnTitle = "A"

输出: 1


示例 2:

输入: columnTitle = "AB"

输出: 28


示例 3:

输入: columnTitle = "ZY"

输出: 701


提示:

   1 <= columnTitle.length <= 7

   columnTitle 仅由大写英文组成

   columnTitle 在范围 ["A", "FXSHRXW"] 内

代码:


package main
import "fmt"
func titleToNumber(columnTitle string) int {
  res := 0
  for i := range columnTitle {
    res *= 26
    res += int(columnTitle[i] - 'A' + 1)
  }
  return res
}
func main() {
  fmt.Println(titleToNumber("A"))
  fmt.Println(titleToNumber("AB"))
  fmt.Println(titleToNumber("ZY"))
}


输出:

1

28

701

反向转换见leetcode168题,两个函数对比:

```golang
func convertToTitle(columnNumber int) string {
    ans := ""
    for columnNumber > 0 {
        mod := (columnNumber - 1) % 26
        ans = string('A'+mod) + ans
        columnNumber = (columnNumber - 1) / 26
    }
    return ans
}
func titleToNumber(columnTitle string) int {
    ans := 0
    for i := range columnTitle {
        n := int(columnTitle[i] - 'A' + 1)
        ans = ans*26 + n
    }
    return ans
}
```



172. 阶乘后的零 Factorial Trailing Zeroes


给定一个整数 n ,返回 n! 结果中尾随零的数量。


提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1


示例 1:

输入:n = 3

输出:0

解释:3! = 6 ,不含尾随 0


示例 2:

输入:n = 5

输出:1

解释:5! = 120 ,有一个尾随 0


示例 3:

输入:n = 0

输出:0


提示:

   0 <= n <= 10^4

进阶:你可以设计并实现对数时间复杂度的算法来解决此问题吗?

代码:


package main
import "fmt"
func trailingZeroes(n int) int {
  count := 0
  for i := 5; i <= n; i *= 5 {
    count += n / i
  }
  return count
}
func main() {
  fmt.Println(trailingZeroes(3))
  fmt.Println(trailingZeroes(5))
  fmt.Println(trailingZeroes(0))
  fmt.Println(trailingZeroes(20))
}


输出:

0

1

0

4

原理:

阶乘 n! = 1*2*3*......*(n-1)*n

这个式子中,因子 5 的个数只有5,0结尾的数才有,而因子2每个偶数都会有,包含的因子 2 的个数肯定多于因子 5 的个数,因此因子 5 的个数决定阶乘式尾数 0 的个数。

目录
相关文章
|
Shell Linux 算法
Shell编程——弱数据类型的脚本语言快速入门指南
Shell编程——弱数据类型的脚本语言快速入门指南
195 0
Shell编程——弱数据类型的脚本语言快速入门指南
|
Go Linux Shell
Linux 终端命令之文件浏览(2) more
Linux 终端命令之文件浏览(2) more
173 0
Linux 终端命令之文件浏览(2) more
|
Shell 机器学习/深度学习 Linux
Linux 终端操作命令(2)内部命令
Linux 终端操作命令(2)内部命令
286 0
Linux 终端操作命令(2)内部命令
|
C++ 算法 存储
力扣 C++|一题多解之动态规划专题(2)
力扣 C++|一题多解之动态规划专题(2)
209 0
力扣 C++|一题多解之动态规划专题(2)
|
Python 索引
Python Numpy入门基础(一)创建数组
Python Numpy入门基础(一)创建数组
260 0
Python Numpy入门基础(一)创建数组
|
Java 容器 程序员
Java语言程序设计试卷6套
Java语言程序设计试卷6套
1184 0
Java语言程序设计试卷6套
|
Java Go C++
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
205 0
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
|
2月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
171 1
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
633 4
Golang语言之管道channel快速入门篇
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
241 4
Golang语言文件操作快速入门篇