leetcode 168. Excel Sheet Column Title

将数字转化为字母,如1 - A, 26 - Z, 27 - 27。

解决:

理解辗转相除法即可,思考:

Z*26^2  +  Z*26^1  +  Z*26^0

辗转相除,除以26的时候,Z*26^1  +  Z*26^0  +  (Z / 26),最后多个1。要么减掉,要么判断。

    string convertToTitle(int n) {
        string ret;
        
        while (n > 0) {
            int rem = n % 26;
            if (rem == 0) {
                ret.push_back('Z');
                n = n / 26 - 1;
            } else {
                ret.push_back(rem + 64);
                n = n / 26;
            }
        }
        reverse(ret.begin(), ret.end());
        return ret;
    }

也可先--n再除,直接加上‘A’即可。

posted on 2018-01-29 15:45  willaty  阅读(105)  评论(0编辑  收藏  举报

导航