leetcode -- 171、172

喜欢而已 提交于 2020-02-27 12:14:53

171. Excel表列序号

题目描述

给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

示例 1:

输入: “A”
输出: 1

示例 2:

输入: “AB”
输出: 28

示例 3:

输入: “ZY”
输出: 701

解题方法

二十六进制转十进制

int titleToNumber(char * s)
{
    long sub, count = 0, res = 0;
    char c[27] = {'\0', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    for (int i = 0; i < strlen(s); i ++)
    {
        res = res * 26 + s[i] - 'A' + 1;
    }
    return res;
}

在这里插入图片描述

172.阶乘后的零

题目描述

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

示例 1:

输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。

示例 2:

输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。

解题方法

先算阶乘,再算零gg了,因为阶乘很容易溢出。这题目是个数学题。
分析点这里。

int trailingZeroes(int n)
{
    int count = 0;
    while (n > 0) 
    {
        count += n / 5;
        n = n / 5;
    }
    return count;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!