- Excel表列名称
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
https://leetcode.cn/problems/excel-sheet-column-title/description/
我的解法:
class Solution {
public:string convertToTitle(int columnNumber) {std::map<int, char> c2n;for (int i = 1; i <= 26; i++) {c2n[i] = 'A'+ (i-1);}std::string result;if(columnNumber<=26){result = c2n[columnNumber];}else{while(columnNumber != 0){int c = columnNumber % 26; //找到余数if(c==0) //整除的情况下,加Z{result += 'Z';columnNumber = columnNumber / 26 -1;}else{result += c2n[c]; columnNumber = columnNumber / 26; //26进制下的更高一位}}}string rresult(result.rbegin(),result.rend()); //注意使用上面的方法需要反转字符串才行,解法二有改进return rresult;}
};
另一种解法:这种解法不用考虑构造对应关系,直接利用了ASCII表进行映射,而且对于字符串的拼接使用的方法也可以学习,减少了字符串反转的问题
#include <iostream>
#include <string>
#include <map>class Solution {
public:std::string convertToTitle(int columnNumber) {std::string result;while (columnNumber > 0) {int remainder = (columnNumber - 1) % 26;result = char('A' + remainder) + result;columnNumber = (columnNumber - 1) / 26;}return result;}
};
还可以参考下官方的解答
https://leetcode.cn/problems/excel-sheet-column-title/solutions/849363/excelbiao-lie-ming-cheng-by-leetcode-sol-hgj4/