试题请参见: https://oj.leetcode.com/problems/excel-sheet-column-title/
题目概述
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
解题思路
不断对26取余数, 计算直至n == 0.
例如:
- 初始n = 28
- 先计算 (n - 1) % 26的值 (= 1), 则当前位为B.
- n /= 26 (此时 n == 1)
- 再计算 (n - 1) % 26的值 (= 0), 则当前位为A.
- 则最终结果为AB.
遇到的问题
By one mistake: 各种边界问题
设想n == 26的情况. 循环的终止条件为 n == 0.
当n == 26时, 计算完n /= 26时的结果为1. 不满足循环终止条件, 会再次进入第2次循环, 使得最终输出结果为AZ.
因此需要对这种情况做特殊处理.
源代码
class Solution {
public:
std::string convertToTitle(int n) {
std::string columnTitle;
if ( n <= 0 ) {
return columnTitle;
}
char currentChar = 0;
while ( n != 0 ) {
currentChar = 'A' + ((n - 1) % 26);
columnTitle = currentChar + columnTitle;
if ( n == 26 ) {
break;
} else {
n = (n - 1) / 26;
}
}
return columnTitle;
}
};