leetcode 168

2018-05-10  本文已影响0人  卖西瓜的西瓜皮

168. Excel Sheet Column Title

类似26进制,但是每一个处理都没有0的计数,经过多次2进制竖式的形式的类比和推导发现,只要涉及到Z,也就是除法余数为0的时候会遇到错误,错了很多次发现规律,余数为0,也就是出现Z,对n的继续处理的值要减1。举例说明,52 = 26 * 2 + 0,出现余数等于0,因为没有0的计数,其实0代表Z。n被2代替进入下个循环。那么剩下的2 = 26 * 0 + 2,余数为2,代表字幕B,按照正常计算来说结果是BZ,但实际上结果是AZ,经过多次验证,均有此问题,所以当余数为0时,在n被2取代时要减1。

其中的数学理由没太想好怎么解释,是该计数法没有0引起的。

class Solution {
public:
    string convertToTitle(int n) {
        vector<char> ans;
        string str = "";
        while(1)
        {
            int temp = n / 26;
            int yushu = n % 26;
            if(yushu == 0)
            {
                ans.push_back('Z');
                temp--;
            }
            if(yushu != 0)ans.push_back('A'+ yushu - 1);
            if(temp == 0)break;
            n = temp;
        }
        for(int i = ans.size() - 1; i >= 0; i--)
        {
            str += ans[i];
        }
        return str;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读