剑指offer----输入用字母表示的列号编码,核心内容:二十六进制变十进制

本文介绍了一个实用的算法,用于将Excel中用字母表示的列号(如A、B...AA、AB...)转换为其对应的数值列号(如1、2...27、28...)。通过解析二十六进制到十进制的转换过程,提供了一个清晰的函数实现,便于理解和应用。

题目:

用A表示第一列,用B表示第二列。。。。用Z表示第26列,用AA表示第27列。。。请写出一个函数,输入用字母表示的列号编码,输出它是第几列。

思路:

此问题最精彩之处,核心---二十六进制变十进制

      function calColumn(){
           // var calStr = document.getElementById("preArr").value.toUpperCase();
            var calStr = 'AB'.toUpperCase()//将输入的内容都变成大写
            var result = 0;
            for(var i = calStr.length; i > 0; i--) {
                var ch = calStr.charCodeAt(i-1)-64;
                if( i == calStr.length ){
                    result += ch
                }else{
                    //答疑:参考16进制 BFF=12*16^2+15*16+15
                    result += Math.pow(26, calStr.length-i) ;//result的结果就是列号
                }
            }
            document.getElementById("showArr").value=result
        }

此页面下载后,直接放在浏览器演示,即可成功

git源码页面展示内容:https://github.com/Kristen-D/Algorithms/blob/master/algorithm/binaryOfNum/letterColumn.html

转载于:https://www.cnblogs.com/donglt-5211/p/10110109.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值