【算法】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<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);
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值