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