首页 > 代码库 > 求excel某一列对应的字母表示
求excel某一列对应的字母表示
其实就是把一个十进制数转换成26进制,但是这个26进制数没有0,只有1-26:
两种处理方法:
#include <assert.h> #include <algorithm> #include <vector> using namespace std; const int radix = 26; string getCol(int num) { string res; while (num != 0) { res.push_back((num-1)%radix+'A'); num = (num-1)/radix; } reverse(res.begin(), res.end()); return res; } int main() { string res = getCol(702); return 0; }
第二种处理方法:
#include <assert.h> #include <algorithm> #include <vector> using namespace std; const int radix = 26; string getCol(int num) { string res; int i = 1, j = 0, t = i; for (i = 1; i * radix + radix < num; i = radix * i); while (i != 0) { // 26*26+26 和 直接26 int remainder = num % i; int divide = (remainder == 0 && i != 1) ? (num / i - 1) : (num / i); // 因为26进制数没有0, 所以余数要借radix个,并使得商-1, 但是如果divisor = 1, 就不用这么做了 res.push_back(divide + 'A' - 1); num = remainder == 0 ? radix : remainder; i = i / radix; } return res; } int main() { string res = getCol(884); return 0; }
所以,数组下标是从0开始的,没有0真是烦啊。。。。
求excel某一列对应的字母表示
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。