【算法】Excel中的列名与数字的对应
2016-11-24 21:11
260 查看
面试的一道算法笔试题,现总结如下。参考了网上的代码,已给出源代码链接,感谢原作者!程序已调试通过,且正确无误
1 .在Excel中,列的名称是这样一个递增序列:seq={A、B、C、... Z、AA、AB、AC、... AZ、BA、BB、BC、... BZ、CA、... ZZ、AAA、AAB...}。求给出任意一个序列,求这个序列是第几个字符串。
方法一:这个问题可以看成是二十六进制转化为十进制。即ABC=A*(10^2)+B*(10^1)+C
此方法较简单,就不写啦~~~
方法二:ABC=(A*10+B)*10+Z。此方法可以顺序编历每一个字符
即先取得A,然后如果有B,那么就把A左移一位,即A*10+B,如果再有C,就把前面的结果再整体左移一位,再加C,即(A*10+B)*10+C
参考https://www.nowcoder.com/questionTerminal/2313251da21e4f6390eaf8a4539ef41d?pos=6&mutiTagIds=589&orderByHotValue=2
2.在Excel中,列的名称是这样一个递增序列:seq={A、B、C、... Z、AA、AB、AC、... AZ、BA、BB、BC、... BZ、CA、... ZZ、AAA、参考AAB...}。求给出任意一个自然数n,求这个序列中第n个字符串。函数声明:String
getColumnLable(int n)
参考http://blog.csdn.net/guomutian911/article/details/49129321
1 .在Excel中,列的名称是这样一个递增序列:seq={A、B、C、... Z、AA、AB、AC、... AZ、BA、BB、BC、... BZ、CA、... ZZ、AAA、AAB...}。求给出任意一个序列,求这个序列是第几个字符串。
方法一:这个问题可以看成是二十六进制转化为十进制。即ABC=A*(10^2)+B*(10^1)+C
此方法较简单,就不写啦~~~
方法二:ABC=(A*10+B)*10+Z。此方法可以顺序编历每一个字符
即先取得A,然后如果有B,那么就把A左移一位,即A*10+B,如果再有C,就把前面的结果再整体左移一位,再加C,即(A*10+B)*10+C
参考https://www.nowcoder.com/questionTerminal/2313251da21e4f6390eaf8a4539ef41d?pos=6&mutiTagIds=589&orderByHotValue=2
import java.util.Scanner; public class testColToNum { public static void main(String[] args){ Scanner cin=new Scanner(System.in); String s=cin.next(); int result=0; for(int i=0;i<s.length();i++) { result=result*26+(s.charAt(i)-'A'+1); } System.out.println(result); } }
2.在Excel中,列的名称是这样一个递增序列:seq={A、B、C、... Z、AA、AB、AC、... AZ、BA、BB、BC、... BZ、CA、... ZZ、AAA、参考AAB...}。求给出任意一个自然数n,求这个序列中第n个字符串。函数声明:String
getColumnLable(int n)
参考http://blog.csdn.net/guomutian911/article/details/49129321
package From0519; import java.util.Scanner; public class ExcelToNum { public static void main(String[] args){ Scanner cin=new Scanner(System.in); int num=cin.nextInt(); String tmp =""; int count = 1; while((int)(num/Math.pow(26, count-1))>0){ int w3 = ((int)(num % Math.pow(26,count)))/((int)Math.pow(26, count-1)); char c = (char)(w3+65); tmp = c + tmp; count++; } System.out.println(tmp); } }
相关文章推荐
- 将Excel中的字母列名转换成数字的算法
- EXCEL表列名变为数字了怎么办?
- 数字转换成excel列名(10进制到Excel的26进制的转换函数)
- 从键盘输入某个十进制小数或整数,转换成对应的二进制小数并输出。 (查询十进制小数转换成二进制小数的算法,使用循环来实现。 最多保留小数位后7位数字即可)算法
- excel表格中列名和数字对应的面试题
- VBA - 设置EXCEL列名为数字
- Excel列名 字母和数字的转换
- excel列名数字字母转换
- 数字转换成excel列名(10进制到Excel的26进制的转换函数)
- Java通过列索引获取Excel其对应列的字母(两种实现算法)
- EXCEL列名与数字之间转换
- java中将数字转换成excel中列名
- Excel列名 字母和数字的转换
- 字母和数字的转换——Excel列名
- 算法-输出英文字母对应的数字
- LeetCode--Excel Sheet Column Number(Excel表格的列名转数字)Python
- 将数字转换为EXCEL列名的方法
- 字母和数字的转换——Excel列名
- 数字转换成excel列名(10进制到Excel的26进制的转换函数)
- 寻最优数字筛选算法--找出 “排列数列“ 对应的 “组合数列“