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 的个数。

目录
相关文章
|
8月前
|
Shell Linux 算法
Shell编程——弱数据类型的脚本语言快速入门指南
Shell编程——弱数据类型的脚本语言快速入门指南
99 0
Shell编程——弱数据类型的脚本语言快速入门指南
|
8月前
|
Go Linux Shell
Linux 终端命令之文件浏览(2) more
Linux 终端命令之文件浏览(2) more
70 0
Linux 终端命令之文件浏览(2) more
|
8月前
|
Shell 机器学习/深度学习 Linux
Linux 终端操作命令(2)内部命令
Linux 终端操作命令(2)内部命令
80 0
Linux 终端操作命令(2)内部命令
|
8月前
|
C++ 算法 存储
力扣 C++|一题多解之动态规划专题(2)
力扣 C++|一题多解之动态规划专题(2)
74 0
力扣 C++|一题多解之动态规划专题(2)
|
8月前
|
Python 索引
Python Numpy入门基础(一)创建数组
Python Numpy入门基础(一)创建数组
84 0
Python Numpy入门基础(一)创建数组
|
8月前
|
Java 容器 程序员
Java语言程序设计试卷6套
Java语言程序设计试卷6套
908 0
Java语言程序设计试卷6套
|
8月前
|
Java Go C++
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
77 0
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
|
4月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
152 4
Golang语言之管道channel快速入门篇
|
4月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
77 4
Golang语言文件操作快速入门篇
|
4月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
126 3
Golang语言之gRPC程序设计示例