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;
}
来源:CSDN
作者:williamgavin
链接:https://blog.csdn.net/williamgavin/article/details/104530417