168. Excel表列名称 力扣(简单) 组会心态崩了,看了题解

题目描述:

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

例如:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

题源:https://leetcode-cn.com/problems/excel-sheet-column-title/
题解:
https://leetcode-cn.com/problems/excel-sheet-column-title/solution/gong-shui-san-xie-cong-1-kai-shi-de-26-j-g2ur/

模拟
这是一道从 1 开始的的 26 进制转换题。

对于一般性的进制转换题目,只需要不断地对 columnNumber 进行 % 运算取得最后一位,然后对 columnNumber 进行 / 运算,将已经取得的位数去掉,直到 columnNumber 为 0 即可。

一般性的进制转换题目无须进行额外操作,是因为我们是在「每一位数值范围在 [0,x)」的前提下进行「逢 x 进一」。

但本题需要我们将从 1 开始,因此在执行「进制转换」操作前,我们需要先对 columnNumber执行减一操作,从而实现整体偏移。


代码:
class Solution {
public:
    string convertToTitle(int columnNumber) {
      string s="";
      while(columnNumber>0)
      {
          columnNumber--;
          s=s+(char)('A' + (columnNumber%26)); //s.append(ch);
          columnNumber/=26;
      }
      reverse(s.begin(),s.end());
    return s;
    }
};

 

posted on 2021-06-29 21:43  Yxter  阅读(84)  评论(0编辑  收藏  举报

导航