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:
输出: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;}