一.解法
https://leetcode-cn.com/problems/excel-sheet-column-title/
要点:进制转换,取模取余
Python,C++,Java都用了相同的取模取余法
看成26进制转换,但要注意题目不是0-25为基而是1-26为基,所以每次取余前都要减1
节约时间可以用hash表或字典把0-25映射成A-Z
二.Python实现
class Solution:
def convertToTitle(self, n: int) -> str:
answer=""
while n>0:
n-=1
temp=n%26
answer+=chr(65+temp)
n=int(n/26)
return answer[::-1]
三.C++实现
class Solution {
public:
string convertToTitle(int n) {
unordered_map<int,char> hashmap;
string answer;
string answerreverse;
int temp;
for(int i=0;i<26;i++){
hashmap[i]='A'+i;
}
while(n!=0){
n-=1;
temp=n%26;
answer+=hashmap[temp];
n=n/26;
}
for(int i=answer.size()-1;i>=0;i--){
answerreverse+=answer[i];
}
return answerreverse;
}
};
四.java实现
class Solution {
public String convertToTitle(int n) {
StringBuilder sb = new StringBuilder();
int temp;
while (n > 0) {
n-=1;
temp = n % 26;
sb.insert(0, (char) ('A' + temp ));
n /= 26;
}
return sb.toString();
}
}