【算法】Excel中的列名与数字的对应

面试的一道算法笔试题,现总结如下。参考了网上的代码,已给出源代码链接,感谢原作者!程序已调试通过,且正确无误
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



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


你可能感兴趣的:(java,算法)