LeetCode #168 - Excel Sheet Column Title - Easy

Problem

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

Example

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

Algorithm

整理一下题意:给定一个正整数,要求返回其在Excel中代表的列号。

此题与LeetCode #171 - Excel Sheet Column Number - Easy是共轭题目。

注意到整数每隔26个则循环一次,相当于以A,B,C,…,Z表示的一种26进制。
但是与普通26进制不同之处在于,这种列号表示法在进位的情况下,没有表示“0”的符号。只有一位符号时是A,B,C,…,Z,但是进位以后直接从AA开始,但是A并不表示“0”,而是表示“1”。于是需要特别处理这一情况。具体方法是,当列号进位时,即尾数’Z’->’AA’时,令整数n减一。

注意表达式c=((n%26)-1+26)%26+’A’;中,((n%26)-1+26)是使n的余数减一,但是为了取模正确需要令括号内结果为正,所以再加上26。由于模式26,所以加上26不影响取模结果。

代码如下。

class Solution {
public:
    string convertToTitle(int n) {
        string s,t;
        char c;
        while(n){
            c=((n%26)-1+26)%26+'A';
            s+=c;
            n=n/26;
            if(c=='Z') n--;
        }
        for(int i=0;i<s.size();i++) t+=s[s.size()-1-i];
        return t;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值