excel表格中列名和数字对应的面试题

百度面试了一道题:

在Excel中,列的名称是这样一个递增序列:seq={A、B、C、...  Z、AA、AB、AC、... AZ、BA、BB、BC、... BZ、CA、... ZZ、AAA、AAB...}。求给出任意一个序列,求这个序列是第几个字符串。
这个问题我只想到了到了大体思路,代码没有写出来,最最关键的是看出这个问题背后的意义,

代码也就不是问题了,我当时的思路就是为了解题而解题了,没想到这道题考的是什么。

这道题的意义就是26进制的数,将A~Z的字母换成0~25就是相应的26进制数字,所以给定一个整数n,求这个序列里

的第n个字符串,也就是给出十进制求26进制问题,例如:ABC=A*(10^2)+B*(10^1)+C


相应的代码为:


std::string Convert10To26(int n){
	if(n <= 0)
		return "";
	int m = n;
	int rm = 0;
	std::string alphaB="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	std::string res;
	while (m){
		rm = (m -1) % 26;
		 m = (m -1) / 26;

		 res.push_back(alphaB[rm]);
	}
	std::reverse(res.begin(), res.end());

	return res;
}

参考:

http://blog.csdn.net/duxinyuhi/article/details/53326077


相似问题有字符串的全排列和组合问题


https://segmentfault.com/a/1190000002710424

http://blog.csdn.net/sjpz0124/article/details/46640761

https://www.jianshu.com/p/f051a4ae6e93


void SwapString(std::string &orgName, int b, int e){
	char t = orgName[b];
	orgName[b] = orgName[e] ;
	orgName[e] = t;
}
void permutation(std::string &orgName,int begin,int end){
	if (begin == end ) {
		std::cout << orgName << std::endl;
	}
	else {
		for (int k = begin; k <= end; k++) {
			SwapString(orgName, k, begin);
			permutation(orgName, begin + 1, end);
			SwapString(orgName, k, begin);
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值