算法-excel表头位置转成对应数字 26进制转10进制

打印 上一主题 下一主题

主题 1734|帖子 1734|积分 5202

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
给你一个字符串 columnTitle ,表现 Excel 表格中的列名称。返回 该列名称对应的列序号 。
比方:
  1. A -> 1
  2. B -> 2
  3. C -> 3
  4. ...
  5. Z -> 26
  6. AA -> 27
  7. AB -> 28
  8. ...
复制代码

示例 1:
  1. <strong>输入:</strong> columnTitle = "A"
  2. <strong>输出:</strong> 1
复制代码
示例 2:
  1. <strong>输入: </strong>columnTitle = "AB"
  2. <strong>输出:</strong> 28
复制代码
示例 3:
  1. <strong>输入: </strong>columnTitle = "ZY"
  2. <strong>输出:</strong> 701
复制代码

提示:


  • 1 <= columnTitle.length <= 7
  • columnTitle 仅由大写英文组成
  • columnTitle 在范围 ["A", "FXSHRXW"] 内
    1. public class Solution {
    2.     //10进制成26
    3.     public static int titleToNumber(String columnTitle) {
    4.         //定义字母数组
    5.         char[] arr=new char[]{'A','B','C','D','E','F','G','H',
    6.                 'I','J','K','L','M','N','O','P',
    7.                 'Q','R','S','T','U','V','W','X',
    8.                 'Y','Z'};
    9.         char[] arr2=columnTitle.toCharArray();//待处理字符串
    10.         double sum=0;//结果
    11.         int arrLen= arr2.length;//字符个数
    12.         double cimi=0;//次密
    13.         while (arrLen>0)
    14.         {
    15.             for (int i=0;i<26;i++)
    16.             {
    17.                 if(arr[i]==arr2[arrLen-1])
    18.                 {   sum=sum+(i+1)*Math.pow(26,cimi); //x*26^n+...+x*26^0
    19.                     cimi++;
    20.                     break;
    21.                 }
    22.             }
    23.             arrLen--;
    24.         }
    25.         return (int) sum;
    26.     }
    27.     public static void main(String[] args) {
    28.         System.out.println(titleToNumber("FXSHRXW"));
    29.     }
    30. }
    复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表