每日一练(41)(Excel表列名称)

title: 每日一练(41):Excel表列名称
categories:[剑指offer]
tags:[每日一练]
date: 2022/04/13
每日一练(41):Excel表列名称 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入:columnNumber = 1
输出:"A"
示例 2:
输入:columnNumber = 28
输出:"AB"
示例 3:
输入:columnNumber = 701
输出:"ZY"
示例 4:
【每日一练(41)(Excel表列名称)】输入:columnNumber = 2147483647
输出:"FXSHRXW"
提示:
1 <= columnNumber <= 231 - 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl...
方法一: 从1开始的26进制转换
思路分析 正常的26进制显示数字应该是0-25,而本题是1-26,那么在处理每一位之前进行减一,即可变成正常进制转换操作。

string convertToTitle(int columnNumber) { string ans; do { columnNumber--; ans = char(columnNumber % 26 + 'A') + ans; //得到字符列名称 columnNumber /= 26; } while(columnNumber > 0); return ans; }

方法二:取余+反转
思路分析 当余数为0时,我们不能取@而是应该取Z
string convertToTitle(int columnNumber) { string ans; while (columnNumber) { int remainder = columnNumber % 26; if (remainder == 0) { //如果余数是0,就像上一位借个1(26)出来,让余数强行等于26 remainder = 26; columnNumber -= 26; } ans.push_back(remainder + 'A' - 1); columnNumber /= 26; } reverse(ans.begin(), ans.end()); //字符串倒序 return ans; }

    推荐阅读