博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
excel表格中列名和数字对应的面试题
阅读量:4071 次
发布时间:2019-05-25

本文共 1152 字,大约阅读时间需要 3 分钟。

百度面试了一道题:

在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;}

参考:

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

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);		}	}}

你可能感兴趣的文章
自定义 select 下拉框 多选插件
查看>>
linux和windows内存布局验证
查看>>
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>