JAVA 之 每日一记 之 算法( 给你一个Excel表列序号,返回出它对应的数字 )

代码结果:(只想要代码的可以离开了,代码给你了,绝对能用的。想要思路的往下看。)

class Solution {
  public int titleToNumber(String s) {
    int ans = 0;
    for(int i=0;i<s.length();i++) {
      int num = s.charAt(i) - 'A' + 1;
        ans = ans * 26 + num;
    }
    return ans;
  }
}

 

解题思路
标签:字符串遍历,进制转换
初始化结果 ans = 0,遍历时将每个字母与 A 做减法,因为 A 表示 1,所以减法后需要每个数加 1,计算其代表的数值 num = 字母 - ‘A’ + 1
因为有 26 个字母,所以相当于 26 进制,每 26 个数则向前进一位
所以每遍历一位则ans = ans * 26 + num
以 ZY 为例,Z 的值为 26,Y 的值为 25,则结果为 26 * 26 + 25=701

 

posted @ 2020-10-15 16:16  薛定谔_猫  阅读(380)  评论(0)    收藏  举报